首页 > 解决方案 > Pandas 中的条件行和

问题描述

我有一个从 计算的相关矩阵df.corr()。我正在尝试为该矩阵的每一行获取一个行和,分别具有正值和负值。相关矩阵的一行如下所示:

    A    B     C
A  1.00 -0.044 -0.8

预期输出:

Variable PositiveCorr NegativeCorr
A        1.00         -0.844

如何在 Pandas 中实现这一点?

标签: pythonpandasnumpy

解决方案


DataFrame.clip与 一起使用sum

df['PositiveCorr'] = df.clip(lower=0).sum(axis=1)
df['NegativeCorr'] = df.clip(upper=0).sum(axis=1)

df1 = df[['PositiveCorr','NegativeCorr']].rename_axis('Variable').reset_index()

为避免将新列附加到 original DataFrame,请使用:

df1 = (df.index
         .to_frame(name='Variable')
         .assign(PositiveCorr=df.clip(lower=0).sum(axis=1),
                 NegativeCorr= df.clip(upper=0).sum(axis=1)))
print (df1)
  Variable  PositiveCorr  NegativeCorr
A        A           1.0        -0.844

推荐阅读