我有一个看起来像这样的 csv:
YYYY-MO-DD HH-MI-SS_SSS ATMOSPHERIC PRESSURE (hPa) mean
2/24/2016 13:00 1011.937618
2/24/2016 14:00 1011.721583
2/24/2016 15:00 1011.348064
2/24/2016 16:00 1011.30785
2/24/2016 17:00 1011.3198
2/24/2016 18:00 1011.403372
2/24/2016 19:00 1011.485108
2/24/2016 20:00 1011.270083
2/24/2016 21:00 1010.936331
2/24/2016 22:00 1010.920958
2/24/2016 23:00 1010.816478
2/25/2016 00:00 1010.899142
2/25/2016 01:00 1010.209392
2/25/2016 02:00 1009.700625
2/25/2016 03:00 1009.457683
2/25/2016 04:00 1009.268081
2/25/2016 05:00 1009.718639
2/25/2016 06:00 1010.745444
2/25/2016 07:00 1011.062028
2/25/2016 08:00 1011.168117
2/25/2016 09:00 1010.771281
2/25/2016 10:00 1010.138053
2/25/2016 11:00 1009.509119
2/25/2016 12:00 1008.703811
2/25/2016 13:00 1008.021547
2/25/2016 14:00 1007.774825
..... .....
Run Code Online (Sandbox Code Playgroud)
我想创建一个新的数据框,其中包含每天同一小时内的平均值:
Hour Average
13:00 1009.9795825
14:00 1009.748204
15:00 ....
Run Code Online (Sandbox Code Playgroud)
有什么简单的方法可以做到吗?
谢谢 !
一旦你解析日期为大熊猫的datetime般的系列,那么你就可以访问使用时间序列的时间dt访问:
df['YYYY-MO-DD HH-MI-SS_SSS'] = pd.to_datetime(df['YYYY-MO-DD HH-MI-SS_SSS'])
hour = pd.to_timedelta(df['YYYY-MO-DD HH-MI-SS_SSS'].dt.hour, unit='H')
Run Code Online (Sandbox Code Playgroud)
然后你可以分组hour并计算每组的平均值:
df.groupby(hour).mean()
Run Code Online (Sandbox Code Playgroud)
import pandas as pd
df = pd.DataFrame(
{'ATMOSPHERIC PRESSURE (hPa) mean':
[1011.937618, 1011.721583, 1011.348064, 1011.30785, 1011.3198, 1011.403372,
1011.485108, 1011.270083, 1010.936331, 1010.920958, 1010.816478, 1010.899142,
1010.209392, 1009.700625, 1009.457683, 1009.268081, 1009.718639, 1010.745444,
1011.062028, 1011.168117, 1010.771281, 1010.138053, 1009.509119, 1008.703811,
1008.021547, 1007.774825],
'YYYY-MO-DD HH-MI-SS_SSS':
['2/24/2016 13:00', '2/24/2016 14:00', '2/24/2016 15:00', '2/24/2016 16:00',
'2/24/2016 17:00', '2/24/2016 18:00', '2/24/2016 19:00', '2/24/2016 20:00',
'2/24/2016 21:00', '2/24/2016 22:00', '2/24/2016 23:00', '2/25/2016 00:00',
'2/25/2016 01:00', '2/25/2016 02:00', '2/25/2016 03:00', '2/25/2016 04:00',
'2/25/2016 05:00', '2/25/2016 06:00', '2/25/2016 07:00', '2/25/2016 08:00',
'2/25/2016 09:00', '2/25/2016 10:00', '2/25/2016 11:00', '2/25/2016 12:00',
'2/25/2016 13:00', '2/25/2016 14:00']})
df['YYYY-MO-DD HH-MI-SS_SSS'] = pd.to_datetime(df['YYYY-MO-DD HH-MI-SS_SSS'])
hour = pd.to_timedelta(df['YYYY-MO-DD HH-MI-SS_SSS'].dt.hour, unit='H')
hour.name = 'Hour'
result = df.groupby(hour).mean()
Run Code Online (Sandbox Code Playgroud)
产量
ATMOSPHERIC PRESSURE (hPa) mean
YYYY-MO-DD HH-MI-SS_SSS
00:00:00 1010.899142
01:00:00 1010.209392
02:00:00 1009.700625
03:00:00 1009.457683
04:00:00 1009.268081
05:00:00 1009.718639
...
Run Code Online (Sandbox Code Playgroud)