簡體   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