【问题标题】:Fill missing date and time in Python (pandas)在 Python (pandas) 中填写缺失的日期和时间
【发布时间】:2021-07-18 10:51:28
【问题描述】:

我有一个大数据集,下面给出一个示例。记录1 day 的数据,5-min 间隔为24 hours3214 unique ids

  • 如图所示,某些行中缺少time and date 信息。有没有办法为每个unique_id 自动填充缺失的日期和时间?每个唯一 id 有 288 个日期时间值(5 分钟 * 12 小时 * 24 小时 = 288 每天的值,时间间隔增加 5 分钟)
  • 另外,如何用以前的值填充缺失的unqiue ids
  • 我正在尝试用空单元格填充最后一列 VALUE

我搜索了相关答案12,但没有成功。

最温和的答案是here,但解决方案仅适用于缺少日期,而不适用于日期和时间。

sample_data.csv

datetime    Unique_ID   VALUE
28/01/2018 2:05 105714  284
28/01/2018 2:10 105714  292
28/01/2018 2:15 105714  287
28/01/2018 2:20 105714  193
28/01/2018 2:25 105714  2348
28/01/2018 2:30 105714  284
28/01/2018 2:35 105714  286
28/01/2018 2:40 105714  293
28/01/2018 2:45 105714  229
28/01/2018 2:50 105714  2292
28/01/2018 2:55 105714  225
28/01/2018 4:45 105714  185
28/01/2018 4:50 105714  277
28/01/2018 4:55 105714  185
28/01/2018 5:00 105714  2435
28/01/2018 5:05 105714  273
28/01/2018 5:10 105714  2360
28/01/2018 5:15 105714  282

【问题讨论】:

标签: python python-3.x pandas datetime missing-data


【解决方案1】:

在这里pandas你可以试试:

首先获取nan值的索引:

idx=df[df.isna().all(1)].index

然后使用ffill()方法:

df[['Unique_ID','datetime']]=df[['Unique_ID','datetime']].ffill()

终于可以使用groupby()方法和transform()方法了:

df['VALUE']=df.groupby(['Unique_ID','datetime'],dropna=False).transform('last')

现在,如果您想将由ffill() 方法填充的 'datetime' 列值增加 5 分钟,那么:

df.loc[idx,'datetime']=df.loc[idx,'datetime']+pd.to_timedelta(5,unit='m')

【讨论】:

  • 更新了我的答案,请看一下:)
  • 上述解决方案对我不起作用,因为它取决于nan 值。我正在尝试的数据没有nan 值或任何空格。而是在此处显示的时间间隔之间缺少信息。 i.stack.imgur.com/xNcb5.png
  • 例如上面分享的图片中有22 values of datetime are missing。我正在尝试一种解决方案,该解决方案将自动以 5 分钟的增量填充 datetime 值,持续 24 小时(总共 288 个值,持续 24 小时)。
  • 下次请在提问时更加具体和明确,因为您在问题中没有提到缺失不是指nan,而是两个日期之间的值
猜你喜欢
  • 2018-05-02
  • 2018-05-21
  • 2018-06-24
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2018-10-05
相关资源
最近更新 更多