gpt4 book ai didi

python - 循环遍历 Pandas 的列以减去值

转载 作者:行者123 更新时间:2023-12-01 08:18:32 27 4
gpt4 key购买 nike

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

我读到另一个问题,可以使用以下方法迭代 pandas 中的列:

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()

返回错误,

File "", line 2, in column = column - df[column].mean()

TypeError: unsupported operand type(s) for -: 'str' and '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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com