【发布时间】:2020-02-24 05:41:22
【问题描述】:
我正在尝试在以下 pandas 数据帧上运行 split-apply-combine。我想为每个唯一的客户代码显示 col1 值小于或等于 0 的行数,以及 col1 值大于 0 的行数。
所以这张表:
cust_code col1 col2
0 113231413 -10 2795.19
1 113231413 20 1485.76
2 113231413 25 6201.18
3 113231413 -25 1502.40
4 526242422 -23 6470.12
5 526242422 0 14011.28
6 414314134 0 12426.78
7 414314134 26 12104.77
变成:
cust_code count1 count2
0 113231413 2 2
1 526242422 2 0
2 414314134 1 1
我知道第一步是使用 groupby,但我不确定下一步该做什么:
count = df.groupby('cust_code')['cust_code'].count()
【问题讨论】:
-
鉴于您的问题陈述,您的预期结果没有意义。例如,“col2 值大于 0 的行数”。对于 cust_code 113231413,这应该是 4,而不是每个预期结果的 2。
-
是的,我的错。我重新表述了这个问题。我希望 count2 是 col1 值(不是 col2 值)大于 0 的行数,按 cust_code 分组。
标签: python pandas split-apply-combine