gpt4 book ai didi

python - 如何将 pandas.DataFrame (一周)重新采样为平均日

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:56 24 4
gpt4 key购买 nike

我有几天(甚至几周)每天在完全相同的时间间隔获取的数据,并且想要计算平均日时间曲线。到目前为止,我尝试了每日平均值,但每天都有一个平均值...我需要的是每个可用时间的所有可用天数的平均值。很可能真的很容易知道正确的命令。不幸的是我对 Pandas 还很陌生。即使只是提示在文档中查找位置也会很棒!

Time                   some value

2010-08-31 12:30:00 33.910
2010-08-31 12:40:00 33.250
2010-08-31 12:50:00 30.500
2010-08-31 13:00:00 27.065
2010-08-31 13:10:00 25.610
...

2013-06-07 02:10:00 16.970
2013-06-07 02:20:00 16.955
2013-06-07 02:30:00 17.000
2013-06-07 02:40:00 17.015
2013-06-07 02:50:00 16.910

最佳答案

您可以尝试groupby小时分钟transform 意思:

print df
Time some value
0 2010-08-31 12:30:00 33.910
1 2010-08-31 12:40:00 33.250
2 2010-08-31 12:50:00 30.500
3 2010-08-31 13:00:00 27.065
4 2010-08-31 13:10:00 25.610
5 2013-06-07 02:10:00 16.970
6 2013-06-07 02:20:00 16.955
7 2013-06-07 02:30:00 17.000
8 2013-06-07 02:40:00 17.015
9 2013-06-07 02:50:00 16.910

#convert column time to datetime
df['Time'] = pd.to_datetime(df['Time'])
#set index from column Time
df = df.set_index('Time')
print df
some value
Time
2010-08-31 12:30:00 33.910
2010-08-31 12:40:00 33.250
2010-08-31 12:50:00 30.500
2010-08-31 13:00:00 27.065
2010-08-31 13:10:00 25.610
2013-06-07 02:10:00 16.970
2013-06-07 02:20:00 16.955
2013-06-07 02:30:00 17.000
2013-06-07 02:40:00 17.015
2013-06-07 02:50:00 16.910
print df.groupby([df.index.hour, df.index.minute])['some value'].transform('mean')
Time
2010-08-31 12:30:00 33.910
2010-08-31 12:40:00 33.250
2010-08-31 12:50:00 30.500
2010-08-31 13:00:00 27.065
2010-08-31 13:10:00 25.610
2013-06-07 02:10:00 16.970
2013-06-07 02:20:00 16.955
2013-06-07 02:30:00 17.000
2013-06-07 02:40:00 17.015
2013-06-07 02:50:00 16.910
dtype: float64

下一个解决方案不将 index 设置为 Datetimeindex,使用 dt.hourdt.minute并创建新列newCol:

print df
Time some value
0 2010-08-31 12:30:00 33.910
1 2010-08-31 12:40:00 33.250
2 2010-08-31 12:50:00 30.500
3 2010-08-31 13:00:00 27.065
4 2010-08-31 13:10:00 25.610
5 2013-06-07 02:10:00 16.970
6 2013-06-07 02:20:00 16.955
7 2013-06-07 02:30:00 17.000
8 2013-06-07 02:40:00 17.015
9 2013-06-07 02:50:00 16.910

#convert column time to datetime
df['Time'] = pd.to_datetime(df['Time'])
print df
Time some value
0 2010-08-31 12:30:00 33.910
1 2010-08-31 12:40:00 33.250
2 2010-08-31 12:50:00 30.500
3 2010-08-31 13:00:00 27.065
4 2010-08-31 13:10:00 25.610
5 2013-06-07 02:10:00 16.970
6 2013-06-07 02:20:00 16.955
7 2013-06-07 02:30:00 17.000
8 2013-06-07 02:40:00 17.015
9 2013-06-07 02:50:00 16.910
df['newCol'] = df.groupby([df['Time'].dt.hour, df['Time'].dt.minute])['some value']
.transform('mean')
print df
Time some value newCol
0 2010-08-31 12:30:00 33.910 33.910
1 2010-08-31 12:40:00 33.250 33.250
2 2010-08-31 12:50:00 30.500 30.500
3 2010-08-31 13:00:00 27.065 27.065
4 2010-08-31 13:10:00 25.610 25.610
5 2013-06-07 02:10:00 16.970 16.970
6 2013-06-07 02:20:00 16.955 16.955
7 2013-06-07 02:30:00 17.000 17.000
8 2013-06-07 02:40:00 17.015 17.015
9 2013-06-07 02:50:00 16.910 16.910

关于python - 如何将 pandas.DataFrame (一周)重新采样为平均日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35842209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com