[英]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.