Pandas DataFrame高效查找:如何快速计算当前行值上方比其大的数据个数?(高效.前行.个数.查找.比其...)

wufei123 发布于 2025-03-22 阅读(13)

pandas dataframe高效查找:如何快速计算当前行值上方比其大的数据个数?

Pandas高效数据处理:快速查找上方较大数值的计数

本文介绍使用Pandas高效处理数据,解决在DataFrame中查找特定列当前行值上方比其大的数据个数的问题。 具体问题:给定一个三列DataFrame,需要添加一列col4,col4的值表示从当前行col3的值向上查找,直到遇到第一个大于当前值的值,计算两者之间包含的行数。

示例DataFrame如下:

    col1  col2  col3
0    5.5   2.5  10.0
1    2.0   4.5   1.0
2    2.5   5.2   8.0
3    4.5   5.8   4.8
4    4.6   6.3   9.6
5    4.1   6.4   9.0
6    5.1   2.3   3.0
7    5.1   2.3  11.1
8    5.1   2.3  10.0
9    5.1   2.3  11.1
10   5.1   2.3  20.0
11   5.1   2.3  31.0
12   5.1   2.3   5.0

目标是添加col4列,满足上述条件。例如,第4行col3值为9.6,向上查找,直到遇到大于9.6的值(第7行11.1),之间有3行(第4,5,6行),所以col4值为3。

循环方法效率低,以下使用NumPy的矩阵运算,避免显式循环:

import numpy as np
import pandas as pd

data = [[5.5, 2.5, 10.0], [2.0, 4.5, 1.0], [2.5, 5.2, 8.0],[4.5, 5.8, 4.8], [4.6, 6.3, 9.6],[4.1, 6.4, 9.0],[5.1, 2.3, 3],[5.1, 2.3, 11.1],[5.1, 2.3, 10],[5.1, 2.3, 11.1],[5.1, 2.3, 20],[5.1, 2.3, 31],[5.1, 2.3, 5]]
df = pd.DataFrame(data, columns=['col1', 'col2', 'col3'])

df['col4'] = [np.sum(df['col3'][:i+1].values > val) for i, val in enumerate(df['col3'])]

print(df)

代码定义一个列表推导式,遍历DataFrame,使用NumPy的sum函数高效计算比当前值大的元素个数。此方法在处理大量数据时,效率远高于循环方法。

以上就是Pandas DataFrame高效查找:如何快速计算当前行值上方比其大的数据个数?的详细内容,更多请关注知识资源分享宝库其它相关文章!

标签:  高效 前行 个数 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。