
请参阅数据片段。我在Excel中的多个工作表中有类似的数据,每个工作表是不同的年份。对于每个月、日和时间(12和00),我希望在所有工作表上取K列的平均值。但是,每个工作表的数据行数并不相同。我想要取所有工作表的K的平均值,但前提是A、B、E、G列中的数据都与工作表中的数据匹配。因此,从数据示例中,我将获得每个表中的month=1、date=1、time=am和mb=100中所有表的K2的平均值。
发布于 2019-03-22 23:43:59
在没有你的数据的情况下,我做了两个DataFrames示例
首先,您需要使用以下命令将数据从excel导入pandas:
df1 = pd.read_excel('name_file.xlsx', sheet_name='year2018')每年都要这样做。
之后,您可以使用我的示例来获得预期的输出:
# Example dataframe 1
print(df1)
Month Date Year Time mb dir
0 1 1 2018 AM 100 265
1 1 1 2018 AM 150 265
2 1 1 2018 AM 200 270
3 1 1 2018 AM 250 270
4 1 1 2018 PM 100 265
5 1 1 2018 PM 150 265
6 1 1 2018 PM 200 265
7 1 1 2018 PM 250 265
#Example dataframe2
print(df2)
Month Date Year Time mb dir
0 1 1 2019 AM 100 275
1 1 1 2019 AM 150 275
2 1 1 2019 AM 200 280
3 1 1 2019 AM 250 280
4 1 1 2019 PM 100 275
5 1 1 2019 PM 150 275
6 1 1 2019 PM 200 275
7 1 1 2019 PM 250 280我们可以使用pandas.concat将数据帧附加在一起(在您的示例中,这些数据帧可以超过两个)。
df_all = pd.concat([df1, df2], ignore_index=True)
print(df_all)
Month Date Year Time mb dir
0 1 1 2018 AM 100 265
1 1 1 2018 AM 150 265
2 1 1 2018 AM 200 270
3 1 1 2018 AM 250 270
4 1 1 2018 PM 100 265
5 1 1 2018 PM 150 265
6 1 1 2018 PM 200 265
7 1 1 2018 PM 250 265
8 1 1 2019 AM 100 275
9 1 1 2019 AM 150 275
10 1 1 2019 AM 200 280
11 1 1 2019 AM 250 280
12 1 1 2019 PM 100 275
13 1 1 2019 PM 150 275
14 1 1 2019 PM 200 275
15 1 1 2019 PM 250 280现在,我们可以使用pandas.Groupby.Series.mean来获得您预期的输出:
print(df_all.groupby(['Month', 'Date', 'Time', 'mb']).dir.mean().reset_index())
Month Date Time mb dir
0 1 1 AM 100 270.0
1 1 1 AM 150 270.0
2 1 1 AM 200 275.0
3 1 1 AM 250 275.0
4 1 1 PM 100 270.0
5 1 1 PM 150 270.0
6 1 1 PM 200 270.0
7 1 1 PM 250 272.5https://stackoverflow.com/questions/55302897
复制相似问题