[英]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_string
為Min 、 Max 、 Mean標簽和 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.