python - 如何将所有列与 Pandas 中的一列进行比较?

标签 python pandas numpy dataframe

对于下面的df

                A       B       ..... THRESHOLD             
DATE                                       
2011-01-01       NaN       NaN  .....      NaN   
2012-01-01 -0.041158 -0.161571  ..... 0.329038   
2013-01-01  0.238156  0.525878  ..... 0.110370   
2014-01-01  0.606738  0.854177  ..... -0.095147   
2015-01-01  0.200166  0.385453  ..... 0.166235 

我必须比较 N 个列,如 A、B、C .... 与 THRESHOLD 并输出结果,如

df['A_CALC'] = np.where(df['A'] > df['THRESHOLD'], 1, -1)
df['B_CALC'] = np.where(df['B'] > df['THRESHOLD'], 1, -1)

如何将以上内容应用于所有列(A、B、C ...)而不明确为每列编写一个语句?

最佳答案

你可以使用df.apply:

In [670]: df.iloc[:, :-1]\
            .apply(lambda x: np.where(x > df.THRESHOLD, 1, -1), axis=0)\
            .add_suffix('_CALC')
Out[670]: 
            A_CALC  B_CALC
Date                      
2011-01-01      -1      -1
2012-01-01      -1      -1
2013-01-01       1       1
2014-01-01       1       1
2015-01-01       1       1

如果 THRESHOLD 不是您的最后一列,您最好使用

df[df.columns.difference(['THRESHOLD'])].apply(lambda x: np.where(x > df.THRESHOLD, 1, -1), axis=0).add_suffix('_CALC')

关于python - 如何将所有列与 Pandas 中的一列进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527834/

相关文章:

python - 如何修复此 'cmd' 无法识别错误以在 VSCode 中进行调试?

python - 如何使用 scikit-learn 训练/升级非常大的数据集?

python - confluence_kafka : how to reliably seek before reading data (avoiding Erroneous state)

python - 如何使字典键是 Pandas 数据帧的一列到列?

python - 将值列表转换为 python 中的时间序列

arrays - 选择 numpy 中的列

python - 你如何在python中执行带有url的mysql?

pandas - 如何清除pandas中的Dataframe内存?

python - 符号警告: Failed to read symbol replacing with NaN

python - 快速查找数组中重复元素的长度和起始索引的方法