python - groupby 在熊猫的两列中计算相同的值?
问题描述
我有以下熊猫数据框:
name1 name2
A B
A A
A C
A A
B B
B A
我想添加一个名为 new 的列,它计算name1
或 name2
保留合并的列(name1
和中的不同值name2
)。因此,预期的输出是以下数据帧:
name new
A 7
B 4
C 1
我试过了
df.groupby(["name1"]).count().groupby(["name2"]).count()
,除此之外……但尽管最后一个似乎给了我正确的结果,但我无法获得连接的数据集。
解决方案
您可以value_counts
使用df.stack()
:
df[['name1','name2']].stack().value_counts()
#df.stack().value_counts() for all cols
A 7
B 4
C 1
具体来说:
(df[['name1','name2']].stack().value_counts().
to_frame('new').rename_axis('name').reset_index())
name new
0 A 7
1 B 4
2 C 1
推荐阅读
- mongoose - 如何根据 2 个字段从猫鼬模型中获取不同的值?
- r - 完成创建R函数后;通过使用此函数和小插图中的样本值来证明更正。错误说“未使用的参数(...)”
- c++ - 安装 FLTK 库时配置错误
- python - 根据 Pandas 中的 id 将列值从一个数据帧复制到另一个数据帧
- asp.net-core - 在 .net 核心中强制 http 到 https:未调用 Api 控制器方法
- amazon-rds - 从 AWS CLI 创建数据库而不提供密码
- php - 无论如何要在没有服务的情况下启动 docker 容器吗?
- apache-kafka - Sarama ClusterAdmin 连接问题 - 管道损坏
- hibernate - QueryDsl Embedded 未映射
- reactjs - Gatsby 使用 GH-Pages 部署并且 --Path-Pefix 已损坏