[英]Using Pandas to average data across excel sheets with matching column data
在沒有您的數據的情況下,我制作了兩個示例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.5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.