Pandas 如何获取 DataFrame 中比当前行值大的数据个数?
pandas 获取比当前行值大的数据个数
本问题要求我们从给定 dataframe 中的 col3 列中,查找每个当前行值向上寻找到的第一个比当前值大的值的索引位置。
一个高效的解决方案是利用 numpy 的矩阵运算。具体步骤如下:
- 定义一个 lambda 函数 count_larger,用于计算一个数组中比其最后一个元素大的元素的个数。
- 使用列表解析生成 col4 列的值,其中 i 标识当前行索引。
- 使用 lambda 函数 count_larger,对 col3 列中从当前行到开头(含开头)的子数组进行计数。
import numpy as npdf['col4'] = [count_larger(df[:i + 1]['col3'].values) for i in range(len(df))]
输出:
col1 col2 col3 col40 5.5 2.5 10.0 01 2.0 4.5 1.0 02 2.5 5.2 8.0 13 4.5 5.8 4.8 04 4.6 6.3 9.6 35 4.1 6.4 9.0 06 5.1 2.3 3.0 07 5.1 2.3 11.1 78 5.1 2.3 10.0 09 5.1 2.3 11.1 110 5.1 2.3 20.0 1011 5.1 2.3 31.0 1112 5.1 2.3 5.0 0