python - Groupby 3 列
问题描述
我想使用基于 3 列的 groupby 函数。第一列包含家庭的姓氏信息,第二列包含该家庭中个人的姓名。第三列包含每个人在这些家庭中拥有的动物。我想获取拥有猫或狗的姓名和姓氏的人的信息,以及这些人有多少只猫或狗。我的数据看起来像
Family SubFamily Animal
Smith Karen Cat
Smith Karen Cow
Smith Karen Dog
Jackson Jason Dog
我试过了
merged_family.groupby(["Family","Animal","SubFamily"]).size().loc[:,'Cat'].loc[:,'Dog']
结果可能是
家庭子家庭猫狗
史密斯凯伦 1 1
或类似的东西
那没起效。你可以帮帮我吗?
解决方案
我认为这是一个更好的任务pivot_table
df_merged.query("Animal.isin(['Cat', 'Dog'])")
.pivot_table(columns='Animal', index=['Family', 'SubFamily'], aggfunc='size')
.fillna(0)
.reset_index()
.rename_axis(None, axis=1)
# Family SubFamily Cat Dog
# 0 Jackson Jason 0.0 1.0
# 1 Smith Karen 1.0 1.0
推荐阅读
- windows - 从 windows-host 上的 windows-box 访问共享的 vagrant-folder 而不使用“net use”
- ios - 如何从 Rest API 发送推送通知
- entity-framework - 实体框架一对多:SqlException
- postgresql - postgres 查找匹配和不匹配的记录
- python - 在 Python 中通过 '\n' 将字符串拆分为子字符串
- ios - 强制关闭 iOS 应用程序后,firebase 通知会调用“application:didReceiveRemoteNotification:”吗?
- amazon-web-services - AWS WAF 和 AWS GuardDuty 有什么区别?
- c# - 具有多个参数的 Mvc 属性路由问题
- c# - 如果 2 IEnumerable
包含相同的项目,该项目是否在内存中重复? - regex - 如何使用正则表达式提取某些数据?