簡體   English   中英

如何使用 pandas 在數據框中填充缺失的日期和時間?

[英]How to fill missing date and time in data-frame using pandas?

我有一個大數據集,下面給出了一個示例。 數據記錄 2 個月每天 1 小時間隔 24 小時。

某些行中缺少時間和日期信息,如下所示:

          Date           Open    High    Low     Close

    2021-12-03 00:00:00 1.13060 1.13076 1.13008 1.13012
    2021-12-03 01:00:00 1.13013 1.13023 1.12908 1.12990
    2021-12-03 02:00:00 1.12988 1.12995 1.12925 1.12952
    2021-12-03 03:00:00 1.12955 1.13013 1.12930 1.12942
    2021-12-03 04:00:00 1.12942 1.13000 1.12930 1.12975
    2021-12-03 05:00:00 1.12978 1.13025 1.12965 1.12993
    2021-12-03 06:00:00 1.12992 1.13000 1.12824 1.12832
    2021-12-03 07:00:00 1.12832 1.12939 1.12818 1.12923
    2021-12-03 08:00:00 1.12925 1.12998 1.12852 1.12911
    2021-12-03 09:00:00 1.12911 1.12981 1.12858 1.12976
    2021-12-03 10:00:00 1.12977 1.13146 1.12950 1.13082
    2021-12-03 11:00:00 1.13084 1.13162 1.13015 1.13088
    2021-12-03 12:00:00 1.13088 1.13135 1.12946 1.12965
    2021-12-03 13:00:00 1.12966 1.13339 1.12882 1.13102
    2021-12-03 14:00:00 1.13100 1.13107 1.12844 1.12925
    2021-12-03 15:00:00 1.12923 1.12929 1.12665 1.12792
    2021-12-03 16:00:00 1.12793 1.13100 1.12768 1.13093
    2021-12-03 17:00:00 1.13092 1.13145 1.13012 1.13110
    2021-12-03 18:00:00 1.13105 1.13275 1.13080 1.13245
    2021-12-03 19:00:00 1.13247 1.13268 1.13118 1.13120
    2021-12-03 20:00:00 1.13120 1.13152 1.13012 1.13093
    2021-12-03 21:00:00 1.13092 1.13183 1.13065 1.13155
    2021-12-05 22:00:00 1.13060 1.13160 1.13040 1.13096
    2021-12-05 23:00:00 1.13101 1.13138 1.13015 1.13042

正如您在上面的 dataframe 中看到的, 2021-12-03 21:00:00是最后一條記錄,我沒有接下來 3 小時的數據。 日期2021-12-04的數據全天(每小時)完全缺失。 所以我想通過取相應列的平均值來填充這些數據,然后用它替換。 我們如何使用 pandas 添加它?

您可以使用pd.date_range生成所需的日期范圍。 然后你應該用生成的日期reindex reindex中,您應該使用列的平均值設置fill參數。 利用:

import pandas as pd  
import numpy as np

df = pd.DataFrame({'Date': ['2021-12-03 00:00:00', '2021-12-06 22:00:00'], 'open': [1.13092, 1.13060]})
idx = pd.date_range('2021-12-03', '2021-12-05', freq = '1H')   
df.index = pd.DatetimeIndex(df.Date)
val = np.mean(df['open'])
df = df.reindex(idx, fill_value=val)
del df['Date']

output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM