![](/img/trans.png)
[英]Applying max min and last index within a pandas groupby function Python
[英]Pandas Groupby Min and Max of last N rows of a column
一個時間序列數據除了索引之外還有 3 列,即時間
indexTime,A,B,C
我想列出所有具有最后 10 個 B 和 C +ve 的 As
這意味着我必須做一個
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 因為只有滿足條件
使用帶有tail
和all
groupby
來檢查所有True
s:
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']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.