Pandas 表示基于另一列的某些列(二进制值)
Posted
技术标签:
【中文标题】Pandas 表示基于另一列的某些列(二进制值)【英文标题】:Pandas mean for certain columns (binary values) based on another column 【发布时间】:2021-02-16 02:50:26 【问题描述】:假设我们有这样的事情:
df = pd.DataFrame([[0,1,0,13], [1,0,1,14], [1,1,0,12], [1,0,0,15]], columns = ["A", "B" , "C", "p"])
A、B、C 具有二进制值,我想计算每列的 p 平均值,但要分别计算每个组(1 和 0)。
对于我使用的一列
df.groupby('A')['p'].mean()
但是如何一次计算列 ABC 的平均值?
【问题讨论】:
预期输出应该如何? 完美的是:两列 0 和 1 以及 3 行 A、B、C 答案已编辑。 @jezrael 完美!谢谢! 【参考方案1】:首先使用DataFrame.melt
进行反透视,聚合mean
最后添加Series.unstack
:
df1 = df.melt('p').groupby(['variable', 'value'])['p'].mean().unstack(fill_value=0)
或使用DataFrame.pivot_table
:
df1 = df.melt('p').pivot_table(index='variable', columns='value', values='p', fill_value=0)
print (df1)
value 0 1
variable
A 13.000000 13.666667
B 14.500000 12.500000
C 13.333333 14.000000
【讨论】:
以上是关于Pandas 表示基于另一列的某些列(二进制值)的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:根据另一列的键在现有列上映射字典值以替换 NaN
要检查 Pandas Dataframe 列的 TRUE/FALSE,如果 TRUE 检查另一列是不是满足条件并生成具有值 PASS/FAIL 的新列