我想减去一列的平均值,而不是一一手动选择每一列
我读到另一个问题,即可以使用以下命令遍历熊猫的列:
InvocationType=Event
我尝试过并且可以正常工作,它可以打印出列。我一直在手动计算列的平均值
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())
返回错误
文件“”,第2行,在 列=列-df [column] .mean()
TypeError:-:“ str”和“ float”的不受支持的操作数类型
我不确定为什么会这样。循环会以某种方式将某些列转换为字符串吗?
答案 0 :(得分:1)
似乎需要按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