如何使用 Pandas 将不一致的时间戳四舍五入为五分钟间隔并填补空白?
How can I use Pandas to round inconsistent timestamps to five minute intervals and fill gaps?
输入 - 一年不规则间隔的天气数据(~ 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
感谢您的help/suggestions!
开始于:
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)
输入 - 一年不规则间隔的天气数据(~ 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
感谢您的help/suggestions!
开始于:
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)