【问题标题】:How can I use Pandas to round inconsistent timestamps to five minute intervals and fill gaps?如何使用 Pandas 将不一致的时间戳四舍五入到五分钟间隔并填补空白?
【发布时间】:2016-04-27 00:48:32
【问题描述】:

输入 - 不定期(约 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 

感谢您的帮助/建议!

【问题讨论】:

  • 前两列的数据类型是什么?它们是字符串、日期时间还是其他?
  • 所有数据都从 .csv 或 .xlsx 文件中提取。

标签: python pandas time weather


【解决方案1】:

开始于:

                        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实际上是typestring,你可以先:

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

【讨论】:

  • 感谢 Stefan - 它负责将类型转换为日期时间,并舍入到 5 分钟间隔。关于检查数据中的间隙并在存在间隙的地方插入时间戳有什么想法吗?
  • 工作就像一个魅力 - 谢谢@Stefan
猜你喜欢
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 2017-07-25
  • 2017-12-02
相关资源
最近更新 更多