gpt4 book ai didi

python - 迭代 Pandas 数据框的最快方法?

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:32 25 4
gpt4 key购买 nike

如何运行数据框并仅返回满足特定条件的行?必须在前面的行和列上测试此条件。例如:

          #1    #2    #3    #4
1/1/1999 4 2 4 5
1/2/1999 5 2 3 3
1/3/1999 5 2 3 8
1/4/1999 6 4 2 6
1/5/1999 8 3 4 7
1/6/1999 3 2 3 8
1/7/1999 1 3 4 1

我想为每一行测试一些条件,如果所有条件都通过,我想将该行附加到列表中。例如:

for row in dataframe:
if [row-1, column 0] + [row-2, column 3] >= 6:
append row to a list

对于要返回的行,我最多可能有 3 个条件必须为真。道路我正在考虑通过列出所有真实的观察结果来做到这一点对于每个条件,然后为出现在所有三个列表中的所有行制作一个单独的列表。

我的两个问题如下:

根据前面的行获取满足特定条件的所有行的最快方法是什么?遍历 5,000 行的数据框似乎太长了。特别是如果必须测试潜在的 3 个条件。

获取满足所有 3 个条件的行列表的最佳方法是什么?

最佳答案

选择行的最快方法是遍历数据帧的行。相反,为您希望选择的行创建一个具有 True 值的掩码( bool 数组),然后调用 df[mask] 来选择它们:

mask = (df['column 0'].shift(1) + df['column 3'].shift(2) >= 6)
newdf = df[mask]

要用逻辑与组合多个条件,使用&:

mask = ((...) & (...))

对于逻辑或使用|:

mask = ((...) | (...))

例如,

In [75]: df = pd.DataFrame({'A':range(5), 'B':range(10,20,2)})

In [76]: df
Out[76]:
A B
0 0 10
1 1 12
2 2 14
3 3 16
4 4 18

In [77]: mask = (df['A'].shift(1) + df['B'].shift(2) > 12)

In [78]: mask
Out[78]:
0 False
1 False
2 False
3 True
4 True
dtype: bool

In [79]: df[mask]
Out[79]:
A B
3 3 16
4 4 18

关于python - 迭代 Pandas 数据框的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com