如何使用Pandas将不一致的时间戳舍入到五分钟的时间间隔并填补空白?

时间:2016-01-20 23:16:08

标签: python pandas time weather

输入 - 一年的不定期天气数据(约5分钟) 期望输出 - 每隔5分钟一次的天气数据

我正在尝试清理一年的天气数据,并希望以此为契机探索Python和Pandas的使用。这是一个需要在将来重复的过程,并且自动化它是非常可取的!

输入样本

2/2/2015 8:03   43.5    
2/2/2015 8:08   43.4    0 
2/2/2015 8:13   43.3    0 
2/2/2015 8:18   43.2    7  
2/2/2015 8:28   43.1    9
2/2/2015 8:33   43      11 
2/2/2015 8:38   43      9 
2/2/2015 8:43   43      11 

输出样本

2/2/2015 8:00   43.5    
2/2/2015 8:05   43.4    0 
2/2/2015 8:10   43.3    0 
2/2/2015 8:15   43.2    7 
2/2/2015 8:20   N/A     N/A
2/2/2015 8:25   43.1    9
2/2/2015 8:30   43      11 
2/2/2015 8:35   43      9 
2/2/2015 8:40   43      11 

感谢您的帮助/建议!

1 个答案:

答案 0 :(得分:2)

从:

开始
                        A   B
datetime                     
2015-02-02 08:03:00  43.5 NaN
2015-02-02 08:08:00  43.4   0
2015-02-02 08:13:00  43.3   0
2015-02-02 08:18:00  43.2   7
2015-02-02 08:28:00  43.1   9
2015-02-02 08:33:00  43.0  11
2015-02-02 08:38:00  43.0   9
2015-02-02 08:43:00  43.0  11
2015-02-02 09:00:00  43.1   9

DatetimeIndex: 8 entries, 2015-02-02 08:03:00 to 2015-02-02 08:43:00
Data columns (total 2 columns):
A    8 non-null float64
B    7 non-null float64
dtypes: float64(2)

您可以.resample() DateTimeIndex

df.resample('5Min')

                        A   B
datetime                     
2015-02-02 08:00:00  43.5 NaN
2015-02-02 08:05:00  43.4   0
2015-02-02 08:10:00  43.3   0
2015-02-02 08:15:00  43.2   7
2015-02-02 08:20:00   NaN NaN
2015-02-02 08:25:00  43.1   9
2015-02-02 08:30:00  43.0  11
2015-02-02 08:35:00  43.0   9
2015-02-02 08:40:00  43.0  11
2015-02-02 08:45:00   NaN NaN
2015-02-02 08:50:00   NaN NaN
2015-02-02 08:55:00   NaN NaN
2015-02-02 09:00:00  43.1   9

如果您的datetime实际上属于type string,您可以先:

df['datetime'] = pd.to_datetime(df.datetime)
df.set_index('datetime', inplace=True)