我想减去一列的平均值,而不是一一手动选择每一列
我读到另一个问题,可以使用以下方法遍历熊猫中的列:
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/