我有一个看起来像这样的数据框:
In [3]df
Out[3]:
customer monthly_revenue
0 a 2
1 a 4
2 a 1
3 b 3
4 b 3
5 b 3
6 b 2
7 b 5
8 c 10
9 c 5
对于每个客户,我想遍历他们的每月收入数字,并计算有多少数据点超过或低于某个阈值。在这里进行迭代的最佳方法是什么? 我想要的结果是:
customer rev_over_2 rev_over_5
0 a 0.33 0.0
1 b 0.80 0.2
2 c 1.00 1.0
第二列表示超过2的数据点百分比,第三列表示超过5的数据点百分比。
谢谢!
答案 0 :(得分:1)
使用Series
groupby
+ transform
sum
thresh=2
(df['monthly_revenue']>thresh).groupby(df.customer).transform('sum')
Out[175]:
0 1.0
1 1.0
2 1.0
3 4.0
4 4.0
5 4.0
6 4.0
7 4.0
8 2.0
9 2.0
Name: monthly_revenue, dtype: float64
更新
pd.crosstab(df.customer,(df['monthly_revenue']>thresh),normalize ='index')[True]
Out[191]:
customer
a 0.333333
b 0.800000
c 1.000000
Name: True, dtype: float64