2016-04-27 73 views
0

我有一個數據幀熊貓具有字段txn['time_diff'] Send_Agent Pay_Agent Send_Time Pay_Time得分\ 0 AKC383903 AXX100000 2014年8月19日18時52分35秒22 2015年5月1日:08:39 1 1 AWA280699 AXX100000 2014-08-19 19:32:18 2015-05-01 17:12:32 1 2 ALI030170 ALI030170 2014-08-26 10:11:40 2015-05-01 22 :20:09 1 3 AKC403474 AXX100000 2014-08-19 20:35:53 2015-05-01 21:27:12 1 4 AED002616 AED002616 2014-09-28 18:37:32 2015-05-01 14 :06:17 1 5 ALI030170 ALI030170 2014-08-20 05:08:03 2015-05-01 21:29:43 1 6 ADA414187 ADA414187 2014-09-26 17:46:24 2015-05-01 21 :37:51 1 7 AWA042396 AWA042396 2014-08-27 12:07:11 2015-05-01 17:39:31 1 8 AED002616 AED002616 2014-08-23 04:53:03 2015-05-01 13:33:12 1 9 ALA500685 AXX100000 2014-08-27 16:41:26 2015-05-01 19:01:52 1 10 AWA263407 AXX100000 2014-08-27 18:04:24 2015-05-01 10:39:14 1 11 ACH928457 ACH928457 2014-08-28 10:26:41 2015-05-01 11:55:59 1 time_diff 0 255天03:16:04 1 254天21:40:14 2 248天12 :08:29 3255天0時51分19秒4 214天十九點28分45秒5 254天16點21分四十○秒 6217天3時51分27秒7 247天五點32分20秒 8 251天08:40:09 9247天2時二十零分26秒10 246天16時34分五十零秒 11246天1時29分18秒獲得time_diff的最小值爲熊貓數據幀

TXN [ 'time_diff']。分鐘()工作正常。但是TXN [ 'time_diff']。GROUPBY(TXN [ 'Send_Agent'])。分鐘()給出我以秒爲單位輸出

Send_Agent A03010016 865460億 A03020048 530560億 A10001087 1134590億 A11120030 6801360億 A11120074 7878440億 A11120106 14780450億 A11120117 25056860億 A11120227 9235080億 A11120294 14603200億 A11120304 9702260億 A11120393 37879690億 A11120414 24990790億 A11120425 657530億 A11140016 782269000000000

但我希望它在天,小時,分鐘。

我以下 TXN = txn.astype(STR) Time_diff_min = TXN [ 'time_diff']。GROUPBY(TXN [ 'Send_Agent'])。分鐘()

我得到的輸出是在正確的格式,但是是錯誤的並且正在獲取它找到的「groupby」的第一個值 In [15]:Time_diff_min = txn ['time_diff'] .groupby(txn ['Send_Agent'])。min()

在[16]:Time_diff_min 缺貨[16]: Send_Agent A030100161天00:02:26.000000000 A030200480天14:44:16.0 00000000 A100010871天07:30:59.000000000 A1112003013天06:29:35.000000000 A111200749天02:50:44.000000000 A1112010617天02:34:05.000000000 A1112011729天00:01:26.000000000 A1112022710天16時31分48秒。000000000 A1112029416天21:38:40.000000000 A11120304 11天05:30:26.000000000 A1112039343天20:12:49.000000000 A1112041428天22:11:19.000000000 A111204250天18:15:53.000000000 A111400169天01:17:49.000000000 A111401040天15:33:06.000000000 A111401261天18:36:07.000000000 A1114021423天02:30:07.000000000

另外 Time_diff_min = TXN [ 'time_diff'] ..分鐘( ).groupby(txn ['Send_Agent'])

將引發錯誤我不能在timedelta

+0

你試過'txn ['time_diff']。min()'? – MaxU

+0

做一個min()給我的整數值...我覺得是總秒數..我覺得必須有一種方法來獲得以小時和秒爲單位的最小值。 –

回答

0

它正常工作,如果你的D型是timedelta GROUPBY:

data = """\ 
time_diff 
0 days 16:01:29.000000000 
0 days 21:00:31.000000000 
0 days 05:08:26.000000000 
0 days 22:03:29.000000000 
1 days 01:43:10.000000000 
0 days 19:32:19.000000000 
0 days 20:27:39.000000000 
1 days 18:14:45.000000000 
1 days 02:48:31.000000000 
0 days 22:19:44.000000000 
0 days 13:04:44.000000000 
0 days 13:42:05.000000000 
0 days 17:20:49.000000000 
0 days 22:49:50.000000000 
""" 
txn = pd.read_csv(io.StringIO(data)) 
txn.time_diff = pd.to_timedelta(txn.time_diff) 
txn.dtypes 
txn.time_diff.min() 
txn.time_diff.max() 

輸出:

In [212]: txn.dtypes 
Out[212]: 
time_diff timedelta64[ns] 
dtype: object 

In [213]: txn.time_diff.min() 
Out[213]: Timedelta('0 days 05:08:26') 

In [214]: txn.time_diff.max() 
Out[214]: Timedelta('1 days 18:14:45') 
+0

AttributeError Traceback(最新最後一個) in () ----> 1 grp1 = txn ['time_diff'] .min().groupby(txn ['Send_Agent'])。所以,我試圖在每個Agent上獲得最小的time_diff。 –

+0

@vishalbhatt,在提問時儘量提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。如果出現_pandas_問題,請提供樣本_input_和_output_數據集(CSV/dict/JSON/Python代碼格式中的5-7行_s text_,因此可以在爲您編寫答案時使用它)。這將有助於避免_situations_,例如:「您的代碼不適合我」或「它不適用於我的數據」等。 – MaxU

+0

如果我稍微調整了一個類似的類型錯誤。 TypeError Traceback in () ----> 1 grp1 = txn(['time_diff'])min()。groupby(txn ['Agent ']) TypeError:'DataFrame'對象不可調用 –

1

很抱歉的亂碼問題。爲了做一個timedelta值的groupby,最好的方法是在'timedelta值'上做一個pd.numeric,一旦獲得結果,我們可以再次對它做一個pd.to_timedelta。