Pandas 专门对多列进行分组

Roo*_*Roo 1 python pandas pandas-groupby

我有下面的数据框,想要找到每列的y计数:n

ID 变量1 变量2
1 y
2 n y
3 y n
4 y n
5 y

结果会是这样的:

变量1_N 变量2_N
y 3 2
n 1 2

我使用了transform函数,但想知道是否有更好的方法来获得结果。谢谢!

Psi*_*dom 7

您可以value_counts使用方法对需要计数的所有列进行操作apply,结果将自动连接到索引(或您的情况下的 var 值):

df.filter(like='var').apply(lambda s: s.value_counts())

   var1  var2
y     3     2
n     1     2
Run Code Online (Sandbox Code Playgroud)

或者pd.value_counts直接使用:

df.filter(like='var').apply(pd.value_counts)

   var1  var2
y     3     2
n     1     2
Run Code Online (Sandbox Code Playgroud)