2017-09-06 43 views
1

データフレーム内で、私は系列データを含む列に分割適用結合を試みています。 (私はSO検索したが、データフレーム内で直列に関係するものを見つけていません。)DataFrame内のPython Pandas集計シリーズデータ

データフレーム:

import pandas as pd 
from pandas import Series, DataFrame 

import numpy as np 

ex = {'account': [1, 1, 1, 2, 2], 
     'subaccount': [1, 2, 3, 1, 2], 
     'account_type': ['A', 'A', 'B', 'A', 'B'], 
     'data': [(1, 2, 3), (4, 5, 6), (7, 8, 9), (1, 3, 5), (2, 4, 6)]} 

df = DataFrame(ex, columns=['account', 'subaccount', 'account_type', 'data']) 

をそれから私はそうのように、GROUPBYおよび集計。

result = (df.groupby(['account', 'account_type']) 
      .agg({'subaccount': np.sum})) 

これは私

     subaccount 
account account_type 
1  A    3 
     B    3 
2  A    1 
     B    2 

を与えるが、私が欲しいのは、私はおそらく何かを明らかに欠けている

     subaccount 
account account_type 
1  A   (5, 7, 9) 
     B   (7, 8, 9) 
2  A   (1, 3, 5) 
     B   (2, 4, 6) 

ですが、解決策は私をエスケープします。

答えて

1

これがうまく機能しているので、

result = df.groupby(['account', 'account_type'])\ 
     .apply(lambda x : [sum(y) for y in zip(*x["data"])]) 

それは大きなデータセット

+0

それは小さなデータセットのために遅くなることがありますが動作します。どうもありがとう! –

2
>>> df.groupby(['account', 'account_type']).apply(
     lambda group: tuple(group['data'].apply(pd.Series).sum())) 
account account_type 
1  A    (5, 7, 9) 
     B    (7, 8, 9) 
2  A    (1, 3, 5) 
     B    (2, 4, 6) 
dtype: object 
関連する問題