簡體   English   中英

如何從 python 遍歷 excel 中的單元格

[英]How to iterate through cells in excel from python

我想將兩列(最大值和最小值)之間的平均值寫入每一行的另一列(平均值)。 具體來說,當它遍歷行時,確定前 2 個單元格的平均值並將其寫入第三行的單元格。

import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile

sheet._cell_overwrite_ok = True 

df = pd.read_excel('tempMean.xlsx', sheet_name='tempMeanSheet')

listMax = df['Max']
listMin = df['Min']
listMean = df['Mean']

for df, row in df.iterrows():
    print('Max', row.Max, 'Min', row.Min, 'Mean', row.Mean)

當前結果:

Max 29.7 Min 20.5 Mean nan
Max 29.2 Min 20.2 Mean nan
Max 29.1 Min 21.2 Mean nan

我想要的結果:

Max 29.7 Min 20.5 Mean 24.95
Max 29.2 Min 20.2 Mean 24.7
Max 29.1 Min 21.2 Mean 25.15

如代碼中所示,我已經能夠遍歷行。 但是,我不確定如何應用該等式來找到這些行中的每一行的平均值。 因此,均值行沒有數據。

讓我知道是否有任何意義

嘗試這個:

df = pd.read_excel('tempMean.xlsx', sheet_name='tempMeanSheet')
mean = [(row["Min"] + row["Max"]) / 2 for index, row in df.iterrows()]
df = df.assign(Mean=mean)

考慮預先計算列,使用to_stringMinMaxMean標簽和 output 添加虛擬列,避免任何循環:

# VECTORIZED CALCULATION OF MEAN
df['Mean'] = (df['Max'] + df['Min']) / 2

# ADD LABEL COLUMNS AND RE-ORDER COLUMNS
df = (df.assign(MaxLabel='Max', MinLabel='Min', MeanLabel='Mean')
        .reindex(['MaxLabel', 'Max', 'MinLabel', 'Min', 'MeanLabel', 'Mean'], axis='columns')
      )

# OUTPUT TO SCREEN IN ONE CALL
print(df.to_string())

暫無
暫無

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

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