[英]Pandas groupby multiple columns exclusively
我有下面的 DataFrame 并且想找到每一列的y
和n
的计数:
ID | 变种1 | 变量2 |
---|---|---|
1个 | 是 | |
2个 | n | 是 |
3个 | 是 | n |
4个 | 是 | n |
5个 | 是 |
结果会是这样的:
变种1_N | var2_N | |
---|---|---|
是 | 3个 | 2个 |
n | 1个 | 2个 |
我使用了transform
function 但想知道是否有更好的方法来获得结果。 谢谢!
您可以使用apply
方法对需要计数的所有列执行value_counts
,结果将自动加入索引(或您的情况下的 var 值):
df.filter(like='var').apply(lambda s: s.value_counts())
var1 var2
y 3 2
n 1 2
或者直接使用pd.value_counts
:
df.filter(like='var').apply(pd.value_counts)
var1 var2
y 3 2
n 1 2
您可以使用melt
来展平您的unstack
然后使用value_counts
并拆开变量列:
>>> df.melt('ID').value_counts(['variable', 'value']).unstack('variable')
variable var1 var2
value
n 1 2
y 3 2
您可以删除索引和列名:通过附加``
Output:
>>> df.melt('ID').value_counts(['variable', 'value']).unstack('variable') \
.rename_axis(index=None, columns=None)
var1 var2
n 1 2
y 3 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.