python - 重新采样和填充 Pandas 中缺失的数据

标签 python pandas group-by resampling

我有一个原始数据集,如下所示:

df = pd.DataFrame({'speed': [66.8,67,67.1,70,69],
                   'time': ['2017-08-09T05:41:30.168Z', '2017-08-09T05:41:31.136Z', '2017-08-09T05:41:31.386Z', '2017-08-09T05:41:31.103Z','2017-08-09T05:41:35.563Z' ]})

我可以对其进行一些处理以使其看起来像(删除微秒):

df['time']= pd.to_datetime(df.time)
df['time'] = df['time'].apply(lambda x: x.replace(microsecond=0))

>>> df
   speed                time
0   66.8 2017-08-09 05:41:30
1   67.0 2017-08-09 05:41:31
2   67.1 2017-08-09 05:41:31
3   70.0 2017-08-09 05:41:31
4   69.0 2017-08-09 05:41:35

我现在需要对数据重新采样,以便到达相同时间戳的任何条目都被平均在一起,对于没有收到任何数据的时间戳,使用最后一个可用值。像:

   speed                time
0   66.80 2017-08-09 05:41:30
1   68.03 2017-08-09 05:41:31
2   70.00 2017-08-09 05:41:32
3   70.00 2017-08-09 05:41:33
4   70.00 2017-08-09 05:41:34
5   69.00 2017-08-09 05:41:35

我知道这可能涉及使用 groupby 和 resample,但作为初学者,我发现自己在这些方面苦苦挣扎。关于如何进行的任何想法?

我试过了,但我得到了错误的结果:

df.groupby( [df["time"].dt.second]).mean()
          speed
time           
30    66.800000
31    68.033333
35    69.000000

最佳答案

In [279]: df.resample('1S', on='time').mean().ffill()
Out[279]:
                         speed
time
2017-08-09 05:41:30  66.800000
2017-08-09 05:41:31  68.033333
2017-08-09 05:41:32  68.033333
2017-08-09 05:41:33  68.033333
2017-08-09 05:41:34  68.033333
2017-08-09 05:41:35  69.000000

关于python - 重新采样和填充 Pandas 中缺失的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45586816/

相关文章:

python - Pandas Series 构造函数生成 NaN 值

python : How to combine data from multiple XML files

python - 使用 Pandas Python 计算白天站点中断持续时间

python - 如何从 Pandas Dataframe 计算信息的香农熵?

mysql - 在 SQL (MySQL) 中根据表 1 中的不同 ID 计算表 2 中的不同字段

python - json.解码器.JSONDecodeError : Extra data: line 2 column 1 (char 190)

python - 删除 django 模型类对象而没有外键警告

python - 从其他数据集映射数据。 python Pandas

javascript - 合并具有相同 id 但对对象的值求和的对象

mysql - 按 "every 30 days"对 mysql 结果进行分组