遍历熊猫列以减去值

时间:2019-02-23 12:36:03

标签: python python-3.x pandas

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

我读到另一个问题,即可以使用以下命令遍历熊猫的列:

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”的不受支持的操作数类型

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

1 个答案:

答案 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