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

标签 python pandas

时间序列数据除了索引之外还有 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/

相关文章:

Python:将多个二进制列转换为单个分类列

python - 将 3D pandas 数据帧转换为 2d

python - 扩展 pandas DataFrame 列中的整数范围

python - 通过python脚本加载fixture.json

python - 在 tensorflow 中对图像并行运行预训练的 VGG-16

python - 如何根据日期对x轴进行切片

python - 如何将 Pandas 数据框转换为一维数组?

python - wexpect 语法错误

python - Python WinSound:写入wav后出现运行时错误

python - 使用 python 请求获取 eBay 访问 token (交换身份验证 token )