2017-07-25 26 views
4

我是熊貓新手,我想知道如何通過只提取部分行來清理數據。說我有一個數據幀如下:熊貓dataframe選擇性數據清理帖子組

column1  date key 
A   2016 SB 
A   2017 B 
B   2015 SB 
C   2014 SB 
C   2014 PB 
C   2015 B 
C   2016 SB 

如何清潔的數據,使得對於每個相同的列1值的,我只提取前兩行值,而忽略其餘的(例如在C值,只有2014 SB和2014 PB是我得到的)?

column1  date key 
A   2016 SB 
A   2017 B 
B   2015 SB 
C   2014 SB 
C   2014 PB 

謝謝

回答

7

你需要GroupBy.head,也docs檢查:

df = df.groupby('column1').head(2) 
print (df) 
    column1 date key 
0  A 2016 SB 
1  A 2017 B 
2  B 2015 SB 
3  C 2014 SB 
4  C 2014 PB 
+3

很難頂這一個...;) – MaxU

4
In [82]: df.loc[df.groupby('column1').cumcount().lt(2)] 
Out[82]: 
    column1 date key 
0  A 2016 SB 
1  A 2017 B 
2  B 2015 SB 
3  C 2014 SB 
4  C 2014 PB 
4

出於無奈用多麼真實@ MaxU的語句......我想出了這個荒謬的解。

df.groupby('column1').head(2) 

很難超越這次的...) - MaxU

df.drop_duplicates('column1').append(
    df[df.duplicated('column1')].drop_duplicates('column1') 
) 

    column1 date key 
0  A 2016 SB 
2  B 2015 SB 
3  C 2014 SB 
1  A 2017 B 
4  C 2014 PB 
+1

有趣的解決方案! :) – MaxU