我想减去一列的平均值,而不是一一手动选择每一列

我读到另一个问题,可以使用以下方法遍历熊猫中的列:

for column in df:
    print(df[column])


我已经尝试过并且可以正常工作,它会打印出列。我一直在手动计算列的平均值

average_curtain_price = df["Curtain price"].mean()

new_average = df["Curtain price"] - average_curtain_price

print(new_average.mean())


新的平均值作为可忽略的数字返回,因此我知道此代码有效,但是当我尝试在迭代循环中使用它时:

for column in df:
    column = column - df[column].mean()


返回错误,


  文件“”,第2行,在
      列=列-df [column] .mean()
  
  TypeError:-:“ str”和“ float”的不受支持的操作数类型


我不确定为什么会这样。循环是否以某种方式将某些列转换为字符串?

最佳答案

似乎需要选择df[column]系列:

for column in df:
    out = df[column] - df[column].mean()


如果需要使用前5列,请使用索引:

print (df.columns[:5])

for column in df.columns[:5]:
    out = df[column] - df[column].mean()


如果需要,通过以下方式减去所有值:

df = pd.DataFrame({
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
})

df = df - df.mean()
print (df)
     B    C         D
0 -0.5  1.5 -1.833333
1  0.5  2.5  0.166667
2 -0.5  3.5  2.166667
3  0.5 -1.5  4.166667
4  0.5 -3.5 -1.833333
5 -0.5 -2.5 -2.833333

关于python - 遍历 Pandas 列以减去值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54841673/

10-13 02:32