Pandas中如何高效查找比当前行值大的数据个数?(高效.前行.个数.查找.数据...)
利用Pandas高效查找:找出DataFrame中比当前行'col3'列值大的数据个数
本文介绍一种高效方法,使用Pandas在DataFrame中,针对每一行查找'col3'列的值在之前所有行中比它大的值的个数,并将结果添加到新的'col4'列。
问题描述:给定包含'col1'、'col2'和'col3'三列的Pandas DataFrame,目标是为每一行添加'col4'列,'col4'的值表示从当前行向上查找,在遇到第一个比当前行'col3'列值大的值之前,中间有多少个值。
示例数据:
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
避免低效的循环方法,我们采用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)
代码中,我们使用列表推导式和NumPy的sum()函数进行向量化计算,高效地计算每一行的'col4'值。
最终结果:
col1 col2 col3 col4 0 5.5 2.5 10.0 0 1 2.0 4.5 1.0 0 2 2.5 5.2 8.0 1 3 4.5 5.8 4.8 0 4 4.6 6.3 9.6 3 5 4.1 6.4 9.0 0 6 5.1 2.3 3.0 0 7 5.1 2.3 11.1 7 8 5.1 2.3 10.0 0 9 5.1 2.3 11.1 1 10 5.1 2.3 20.0 10 11 5.1 2.3 31.0 11 12 5.1 2.3 5.0 0
以上就是Pandas中如何高效查找比当前行值大的数据个数?的详细内容,更多请关注知识资源分享宝库其它相关文章!