我想在两列中按值分组。我知道列中所有可能的值。在某些数据示例中,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
与^{} 一起使用与^{} 一起使用,并向具有唯一值的列表中添加值:
您的解决方案:
另一个想法是使用
Categorical
:相关问题 更多 >
编程相关推荐