您的位置 首页 编程知识

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

Pandas高效数据处理:快速查找上方较大数值的计数 本文介绍使用Pandas高效处理数据,解决在DataFr…

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高效查找:如何快速计算当前行值上方比其大的数据个数?的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/8243.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部