簡體   English   中英

有條件的大熊貓分組

[英]Groupby with conditions in pandas

我有一個pd.DataFrame看起來像這樣:

In [30]: df
Out[30]: 
        DATES  UID      A
0  2014-01-01    1  False
1  2014-01-02    2  False
2  2014-01-03    3   True
3  2014-01-04    4   True
4  2014-01-05    5  False
5  2014-01-06    6   True
6  2014-01-07    1  False
7  2014-01-08    2  False
8  2014-01-09    3  False
9  2014-01-10    2  False
10 2014-01-11    3  False
11 2014-01-12    4  False
12 2014-01-13    5  False
13 2014-01-14    3  False
14 2014-01-15    1  False

我想找到一種方法:

  1. 由DATES ASC訂購
  2. 按UID分組
  3. 篩選出所有第一個條目(每個UID)具有'A'== False的UID

所需的輸出如下所示:

In [30]: df
Out[30]: 
    DATES  UID      A
0  2014-01-03    3   True
1  2014-01-04    4   True
2  2014-01-06    6   True
3  2014-01-09    3  False
4  2014-01-11    3  False
5  2014-01-12    4  False
6  2014-01-14    3  False

任何想法非常感謝,謝謝!

看起來需要先sort_values然后filter

df.sort_values(by='DATES', inplace=True)
df = df.groupby('UID', sort=False).filter(lambda x: x.A.iloc[0] == True)
print (df)
        DATES  UID      A
2  2014-01-03    3   True
3  2014-01-04    4   True
5  2014-01-06    6   True
8  2014-01-09    3  False
10 2014-01-11    3  False
11 2014-01-12    4  False
13 2014-01-14    3  False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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