
Pandas高效数据处理:快速查找上方较大数值的计数
本文介绍使用Pandas高效处理数据,解决在DataFrame中查找特定列当前行值上方比其大的数据个数的问题。 具体问题:给定一个三列DataFrame,需要添加一列col4,col4的值表示从当前行col3的值向上查找,直到遇到第一个大于当前值的值,计算两者之间包含的行数。
示例DataFrame如下:
col1 col2 col30 5.5 2.5 10.01 2.0 4.5 1.02 2.5 5.2 8.03 4.5 5.8 4.84 4.6 6.3 9.65 4.1 6.4 9.06 5.1 2.3 3.07 5.1 2.3 11.18 5.1 2.3 10.09 5.1 2.3 11.110 5.1 2.3 20.011 5.1 2.3 31.012 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 npimport pandas as pddata = [[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高效查找:如何快速计算当前行值上方比其大的数据个数?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1359827.html
微信扫一扫
支付宝扫一扫