python-3.x - Python Pandas:如何遍历具有公共列值的行
问题描述
我有一个看起来像这样的数据框:
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 的数据点的百分比。
谢谢!
解决方案
使用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
推荐阅读
- python - 为什么 python 正则表达式搜索方法不能始终正确地返回匹配的对象?
- python - Flask-PyMongo - InsertOneResult 类型的对象不是 JSON 可序列化的
- javascript - FCF 正在工作,但我收到此警告:避免嵌套承诺 promise/no-nesting
- python - 运行 pip install -e 后出现 python ModuleNotFoundError。
- r - 绘制不同的线性函数
- android - Android Kotlin 中 AWS Cognito 服务的登录或登录回调
- angularjs - 角度翻译 Href _blank 不起作用
- javascript - 这个元素索引
- python - 列表切片出索引
- python - Pandas:根据索引标签与列标签条件聚合行