2017-01-28 33 views
1

我有它產生的IPython的:GROUPBY欄裏找到處理時間

COL1  COL 2   COL3 
abc  143613948  143614469 
abc  143613945  143614466 
xyz  164859569  164901557 
xyz  164859531  164900406 

輸出如何COL1進行分組,以獲得新的一列是MAX(COL3)一個數據框 - 分鐘(COL2)?

所需的輸出將類似於數據幀:

COL1  COL4 
abc  524 
xyz  42026 

回答

1

使用agg

agg = df.groupby('COL1').agg(dict(COL2='min', COL3='max')) 
(agg.COL3 - agg.COL2).reset_index(name='COL4') 

    COL1 COL4 
0 abc 524 
1 xyz 42026 

使用apply

df.groupby('COL1').apply(
    lambda d: d.COL3.max() - d.COL2.min()).reset_index(name='COL4') 

    COL1 COL4 
0 abc 524 
1 xyz 42026 
+0

感謝您的答覆。但是,在使用「agg」時,我在iPython筆記本中出現以下錯誤:TypeError:不支持的操作數類型爲 - :'str'和'int' –

+0

我能夠解決上述問題,它的作用就像魅力! –

+0

假設我在原始列中有另一列說ID。 'COL1 COL 2 COL3 ID ABC 143613948 143614469 100 ABC 143613945 143614466 100 XYZ 164859569 164901557 500 XYZ 164859531 164900406 500'如何可以通過在GROUPBY結果添加ID列以及'COL1 COL4 ID 0 ABC 524 100得到輸出 1 xyz 42026 500' –