繁体   English   中英

Pandas groupby 多列独占

[英]Pandas groupby multiple columns exclusively

我有下面的 DataFrame 并且想找到每一列的yn的计数:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM