python - SeriesGroupBy 与 DataFrameGroupBy
问题描述
我是编程、python 和熊猫的新手。我试图不明白为什么这段代码会给我正确的结果:
原DF:
df_cat = df_cat.groupby(['cardio','variable'])['value'].value_counts().to_frame().rename(columns={'value': 'total'}).reset_index()
这个返回错误:
df_cat = df_cat.groupby(['cardio','variable'], as_index=False)['value'].value_counts().to_frame().rename(columns={'value': 'total'}).reset_index()
AttributeError: ' DataFrameGroupBy
' 对象没有属性 ' value_counts
'
我知道唯一的区别是“ as_index=True/False
”。在第一种情况下,我得到SeriesGroupBy
并能够继续value_counts()
,但在第二种情况下DataFrameGroupBy
,我试图理解为什么。也许有人可以向我解释这些东西。
解决方案
如果解释正确,您将试图弄清楚给定组合出现了多少次。在这种情况下,您还需要在 groupby 函数中加入价值。
data = {'cardio': [0,1,1,1,0,0,1,1,1,0],
'variable': ['cholesterol', 'cholesterol', 'cholesterol', 'cholesterol', 'cholesterol',
'overweight', 'overweight', 'overweight', 'overweight', 'overweight'],
'value': [0,1,1,0,0,0,0,0,0,0]}
df = pd.DataFrame(data)
以下函数计算给定组合发生的时间。
df.groupby(['cardio', 'variable', 'value'], as_index=False).agg(total=pd.NamedAgg(column = 'value', aggfunc='count'))
推荐阅读
- amazon-web-services - terraform planing 中的 x509 证书签名问题
- delphi - 需要播放媒体 快进快退 Delphi android
- php - 如何在 phpunit 中使用 error_get_last() 函数模拟和正确编写测试
- docker - 用于启动 Apache Kafka 的 docker compose 出错 - 无法建立到节点 -1 (localhost/127.0.0.1:9092) 的连接
- drools - Drools 7.52 版不使用 GDST 命中策略
- google-apps-script - 从工作表简单触发器运行谷歌脚本时如何解决身份验证错误
- linux - 实时线程优先级值:会更新吗?
- gitlab - ci cd git push 在 gitlab runner 上不起作用
- html - 我的联系表单的重置按钮没有重置
- algorithm - 找到要删除的最小权重边集,这将使图无环