簡體   English   中英

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

[英]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 因為只有滿足條件

使用帶有tailall 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM