2017-11-04 3 views
1

原点/目的地の列と頻度のカウント列を含むpandasデータフレームの原点と終点の分析に問題があります。これら。この単純化されたデータフレームは、Bおよび1〜Cから離れる7を持っているたとえばpandasデータファイル内の別々のカウント列を使って原点と目的地の値を繰り返し集計して新しいデータフレームを作成する

Origin Destination Count 

    A  B   7 
    A  C   1 
    B  A   1 
    B  C   4 
    C  A   3 
    C  B   10 

初期:私が去ると入力しているどのように多くの数とデータフレームにこれを変換したいですしたがって、全体的に退場する場所Aは8になり、場所Aに入ることは4(B-Aは1、C-Aは3)などとなります。新しいデータフレームは次のようになります。

目標:

Place Entering Leaving 

    A  4   8 
    B  17  5 
    C  5   13 

私は、(.groupbyなどいくつかの技術を試してみました)が、まだ私の意図したデータフレームを作成していません。どのようにして、起点/目的地の列の繰り返し値を処理し、離脱数だけの集計値で新しいデータフレームに割り当てることができますか?

ありがとうございました!

答えて

1

ダブルgroupby + concat用途:

a = df.groupby('Destination')['Count'].sum() 
b = df.groupby('Origin')['Count'].sum() 

df = pd.concat([a,b], axis=1, keys=('Entering','Leaving')).rename_axis('Place').reset_index() 
print (df) 
    Place Entering Leaving 
0  A   4  8 
1  B  17  5 
2  C   5  13 
+1

デュアルGROUPBYはいつも私のものになるために使用されます。) – Dark

+0

@Bharath - ありがとう。 – jezrael

+0

ああそうグループバイク** concat **は行く方法です - ありがとう! :) –

0

pivot_tableが、その後sum

df=pd.pivot_table(df,index='Origin',columns='Destination',values='Count',aggfunc=sum) 
pd.concat([df.sum(0),df.sum(1)],1) 

Out[428]: 
     0  1 
A 4.0 8.0 
B 17.0 5.0 
C 5.0 13.0 
関連する問題