2016-08-05 2 views
0

以下は、数百万行のデータフレームの小さなサンプルです。 Send_customersがPay_Customersに送金していることを示します。複数のシナリオをキャプチャするためのPandasを使用した複雑なgroupby操作

 In [14]: df1 
     Out[14]: 
      Send_Customer   Pay_Customer 
0  1000000000009548332 2000000000087113758 
1  1000000000072327616 2000000000087113758 
2  1000000000081537869 2000000000087113758 
3  1000000000007725765 2000000000078800989 
4  1000000000031950290 2000000000078800989 
5  1000000000082570417 2000000000078800989 
6  1000000000009548332 1000000000142041382 
7  1000000000072327616 1000000000142041382 
8  2000000000097181041 1000000000004033594 

複数のシナリオに関係するsend_customersの数を格納する必要があります。

たとえば、Pay_Customers 2000000000087113758,2000000000078800989,1000000000142041382は複数のsend_customersからお金を受け取っています。必要がありますので、それらにお金を送るすべてのそれらのSend_Customersのために、「カウント」の値は、1

Send_Customers 1000000000009548332なり、1000000000072327616はそれぞれPay_Customers 2000000000087113758と1000000000142041382で2多くの1のシナリオに関与し、その累積が「カウント」されていますbe 2.

ありがとうございます!

答えて

1

あなたはgroupbyを使用することができます。

print(df1.groupby('Send_Customer')['Pay_Customer'].count()) 

は出力:あなたのコメントを1として

Send_Customer 
1000000000007725765 1 
1000000000009548332 2 
1000000000031950290 1 
1000000000072327616 2 
1000000000081537869 1 
1000000000082570417 1 
2000000000097181041 1 

、あなただけcount1よりも高くなっている行を維持したい場合は、代わりにこれを行うことができます:

df1 = df1.groupby('Send_Customer')['Pay_Customer'].count().reset_index(name="count") 
df1 = df1[df1['count'] > 1] 

出力:

1 1000000000009548332  2 
3 1000000000072327616  2 
+0

こんにちは。私のデータフレームには何百万もの行があります。上のほんの少しのサンプルでした。申し訳ありませんが、以前に言及していません。私は、多くの場合、関係する顧客の数を1つのシナリオに収める必要があります。したがって、このサンプルでは、​​Pay_customerとしてのSend_customer 2000000000097181041のカウントを取る必要はありません。これは、多対1のシナリオには含まれていません。 –

+0

@mysterious_guy私の編集をご覧ください。 –

関連する問題