使用Pandas捕获多对一场景的复杂groupby操作

时间:2016-08-05 01:34:00

标签: python-2.7 pandas

下面是我的数据帧的一小部分,它有数百万行。它表示Send_customers向Pay_Customers汇款。

{{1}}

我需要为那些涉及多对一场景的send_customers存储一个计数。

例如,Pay_Customers 2000000000087113758,2000000000078800989,1000000000142041382正在从多个send_customers接收资金。因此,对于所有Send_Customers向他们汇款,“计数”值将为1.

Send_Customers 1000000000009548332和1000000000072327616分别涉及Pay_Customers 2000000000087113758和1000000000142041382的2对多场景,因此累计“计数”应为2.

提前致谢!!

1 个答案:

答案 0 :(得分:1)

您可以使用groupby

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

输出:

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

根据您的评论,如果您只想保留count高于1的行,您可以这样做:

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

输出:

1  1000000000009548332      2
3  1000000000072327616      2