gpt4 book ai didi

python - Pandas Groupby 列的最后 N 行的最小值和最大值

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:08 25 4
gpt4 key购买 nike

时间序列数据除了索引之外还有 3 列,即时间

indexTime,A,B,C

我想列出所有具有最后 10 个 B 和 C +ve 的 A

这意味着我必须做

groupby('A')

然后有一个 AND 条件

last N rows of B.min() > 0 AND last N rows of C.min() > 0

我该怎么做?

09:00,ABC,1,1
09:00,XYZ,15,2
09:01,ABC,2,4
09:01,XYZ,1,2
09:02,ABC,-1,2
09:02,XYZ,1,7
09:03,ABC,3,5
09:03,XYZ,5,2

让我们说最后3个在这种情况下,XYZ 将满足条件,因为它的 B 列和 C 列的最后 3 行均为正,而 ABC 的最后 3 行并非全部为正

ABC 09:02 的 B 列为 -1,因此即使 ABC 的 C 列全部为正,测试也会失败。但由于 AND 条件,它会失败

因此,对于条件输出将为 XYZ,因为只有满足条件

最佳答案

使用groupbytailall检查所有 True:

a = df.groupby('A').apply(lambda x: (x.tail(3) > 0).all(1))
print (a)
09:01 09:02 09:03
A
ABC True False True
XYZ True True True

b = a.index[a.all(1)]
print (b)
Index(['XYZ'], dtype='object', name='A')
<小时/>
print (a)
A ABC XYZ
09:01 True True
09:02 False True
09:03 True True

b = a.columns[a.all()].tolist()
print (b)
['XYZ']

关于python - Pandas Groupby 列的最后 N 行的最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47009890/

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