【发布时间】:2021-10-13 20:24:48
【问题描述】:
我想对两列中的值进行分组。我知道列中所有可能的值。在某些数据示例中,列 a 中的某些值不存在。我仍然希望 groupby 的输出说组的 len 为零。
s a
0 Michaels FS
1 Michaels FS
2 Michaels fds
3 Michaels fnfe
4 Rogers FS
5 Rogers fds
6 Rogers fds
7 Rogers ssn
我想对 s 和 a 进行分组。
df.groupby(by=["s", "a"]).size()
如果您查看数据样本,Michaels 和 Rogers 都不存在 fnfe 和 ssn。所以 Michaels-ssn 和 Rogers-fnfe 不会有输出。
我找到了解决这个问题的方法:
df.groupby(by=["s", "a"]).size().unstack().fillna(0).stack()
但后来我发现有可能会有几个 a 的值不在这两个组中,但我仍然在输出中将它们的值设置为零。 s列没有这样的要求。
假设“a”列“adg”有另一个值,该值在任何示例中都不存在。期望的输出是:
s a
Michaels FS 2
fds 1
fnfe 1
ssn 0
adg 0
Rogers FS 1
fds 2
ssn 1
fnfe 0
adg 0
【问题讨论】:
标签: python pandas pandas-groupby