如何通过python

时间:2019-10-02 12:05:38

标签: python excel pandas

我想将两列(最大值和最小值)之间的平均值写入每一行的另一列(平均值)。 具体来说,在遍历行时,请确定前两个单元格的均值并将其写入第三行的单元格中。

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

我已经能够遍历行,如代码所示。 但是,我不确定如何应用方程式来找到这些行中每行的均值。 因此,均值行没有数据。

让我知道是否没有任何意义

2 个答案:

答案 0 :(得分:0)

尝试一下:

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)

答案 1 :(得分:0)

请事先考虑计算列,为 Min Max 平均值标签添加虚拟列,并使用to_string输出,避免任何循环:

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