2016-05-24 3 views
2

を使用して列の非ヌル値の取得回数が、私は上記の本を使用してRefund_Flagための非ヌル・カウントを取得する方法を疑問に思って、私の大きなデータフレームPythonのパンダ:以下groupby.aggregate

Txn_Key Send_Agent   Send_Time   Pay_Time Send_Amount \ 
0   NaN ANO080012 2012-05-31 02:25:00 2012-05-31 21:43:00  490.00 
1   NaN AUK359401 2012-05-31 11:25:00 2012-05-31 11:57:00  616.16 
2   NaN ACL000105 2012-05-31 13:07:00 2012-05-31 17:36:00  193.78 
3   NaN AED420319 2012-05-31 10:50:00 2012-05-31 11:34:00  999.43 
4   NaN ARA030210 2012-05-30 12:14:00 2012-05-31 04:16:00  433.29 
5   NaN AJ5020114 2012-05-31 02:37:00 2012-05-31 04:31:00  378.00 
6   NaN A11171047 2012-05-31 09:39:00 2012-05-31 10:08:00  865.34 
     Pay_Amount  MTCN  Send_Phone Refund_Flag  time_diff 
0   475.68 9323625903  97549829   NaN 0 days 19:18:00 
1   600.87 3545067820 440000000000   NaN 0 days 00:32:00 
2   185.21 1453132764   0511   NaN 0 days 04:29:00 
3   963.04 4509062067 971566016900   NaN 0 days 00:44:00 
4   423.75 6898279087    144   NaN 0 days 16:02:00 
5   377.99 5170985243 963954932506   NaN 0 days 01:54:00 
6   833.89 5352719100  0644798854   NaN 0 days 00:29:00 



grouped = frame1.groupby('Send_Agent') 


x=grouped.agg({'Send_Amount':np.mean,'Pay_Amount':np.mean,'time_diff':np.min,'MTCN':np.size,'Send_Phone':lambda x:x.nunique()}) 

の小さなサンプルです上記グループバイ。

'Refund_Flag':lambda x:pd.count(x.notnull()) 

のようなラムダを使用してみました

がエラーを返しました: はAttributeError: 'モジュール' オブジェクトが

答えて

0

を無属性 '数' を持っているあなたはcountシリーズメソッドを使用することができます

In [11]: g.agg({'Send_Amount':np.mean,'Pay_Amount':np.mean,'time_diff':np.min,'MTCN':np.size,'Send_Phone':lambda x:x.nunique(), "Refund_Flag": lambda x: x.count()}) 
Out[11]: 
      Refund_Flag MTCN Send_Phone Pay_Amount  time_diff Send_Amount 
Send_Agent 
A11171047   0.0  1   1  833.89 0 days 00:29:00  865.34 
ACL000105   0.0  1   1  185.21 0 days 04:29:00  193.78 
AED420319   0.0  1   1  963.04 0 days 00:44:00  999.43 
AJ5020114   0.0  1   1  377.99 0 days 01:54:00  378.00 
ANO080012   0.0  1   1  475.68 0 days 19:18:00  490.00 
ARA030210   0.0  1   1  423.75 0 days 16:02:00  433.29 
AUK359401   0.0  1   1  600.87 0 days 00:32:00  616.16 

文字列 'count'(可能であればInt列を生成する)を渡すこともできます。

In [12]: g.agg({'Send_Amount':np.mean,'Pay_Amount':np.mean,'time_diff':np.min,'MTCN':np.size,'Send_Phone':lambda x:x.nunique(), "Refund_Flag": 'count'}) 
Out[12]: 
      Refund_Flag MTCN Send_Phone Pay_Amount  time_diff Send_Amount 
Send_Agent 
A11171047    0  1   1  833.89 0 days 00:29:00  865.34 
ACL000105    0  1   1  185.21 0 days 04:29:00  193.78 
AED420319    0  1   1  963.04 0 days 00:44:00  999.43 
AJ5020114    0  1   1  377.99 0 days 01:54:00  378.00 
ANO080012    0  1   1  475.68 0 days 19:18:00  490.00 
ARA030210    0  1   1  423.75 0 days 16:02:00  433.29 
AUK359401    0  1   1  600.87 0 days 00:32:00  616.16 

注:あなたがのために同じことを行うことができます「平均」と「分」など

In [13]: g.agg({'Send_Amount': 'mean','Pay_Amount': 'mean' ,'time_diff': 'min','MTCN': 'size', 'Send_Phone': 'nunique', "Refund_Flag": 'count'}) 

カウント方法「カウント」シリーズでは、null以外のエントリ:

In [21]: s = pd.Series([1, 2, np.nan, 4]) 

In [22]: s.count() 
Out[22]: 3 
+0

ありがとうございました。パンダの機能を使うためのこのハックを知らなかった。 –

関連する問題