簡體   English   中英

循環遍歷 Pandas 列以減去值

[英]Looping through columns of Pandas to subtract values

我想減去一列的平均值,而不是手動一一選擇每一列

我在另一個問題上讀到,可以使用以下方法迭代 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()

返回錯誤,

文件“”,第 2 行,列 = 列 - df[column].mean()

類型錯誤:不支持 - 的操作數類型:'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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM