【问题标题】:Fill date gap with NaN and interpolate 5 min resolution data用 NaN 填充日期间隙并插入 5 分钟分辨率数据
【发布时间】:2020-12-10 15:41:08
【问题描述】:

我正在使用 python 和 我需要用 NaN 值填充日期空白,我的数据如下所示:

"Date & Time","High Temp - °C","Low Temp - °C"
"12/4/19 00:00","0.0","-0.1"
"12/4/19 00:05","-0.1","-0.1"
"12/4/19 00:10","0.1","-0.1"
"12/4/19 00:25","0.1","0.1"
"12/4/19 00:30","0.2","0.1"

我希望它们是这样的:

"Date & Time","High Temp - °C","Low Temp - °C"
"12/4/19 00:00","0.0","-0.1"
"12/4/19 00:05","-0.1","-0.1"
"12/4/19 00:10","0.1","-0.1"
"12/4/19 00:15","NaN","NaN"
"12/4/19 00:20","NaN","NaN"
"12/4/19 00:25","0.1","0.1"
"12/4/19 00:30","0.2","0.1"

之后我想插入数据以替换缺失值。

我试过的是:

#%%
from pathlib import Path
import pandas as pd

data=pd.read_csv(Path().joinpath('C:....d_data\\..._data.csv'))


data['Date & Time']=pd.to_datetime(data['Date & Time'],format='%m/%d/%Y %hh:%mm')
data = data.sort_values(by=['Date & Time'], ascending=[True])
data.set_index('Date & Time', inplace=True)
print (data)

【问题讨论】:

  • 你用什么语言写这个?你试过什么?你需要多少行?添加 NaN 并“在那之后”插入值是什么意思?
  • 我正在用 python 编写它。我需要超过 20000 行。我需要以 5 分钟的分辨率插入缺失值
  • 那么请edit 解释您的问题,并包括您目前编写的 Python 代码,以及当前结果的详细信息。请注意,这不是代码编写服务,因此您需要尝试并寻求具体帮助。

标签: python date interpolation nan


【解决方案1】:

你可以resample数据如下:

import pandas as pd

# reading the csv 
df = pd.read_csv('test.csv',parse_dates=['Date & Time'],index_col=0)

# resampling the data for every 5 min
df = df.resample('5T').mean()
print(df)

输出:

 Date & Time               High Temp - °C  Low Temp - °C                        
 2019-12-04 00:00:00             0.0           -0.1
 2019-12-04 00:05:00            -0.1           -0.1
 2019-12-04 00:10:00             0.1           -0.1
 2019-12-04 00:15:00             NaN            NaN
 2019-12-04 00:20:00             NaN            NaN
 2019-12-04 00:25:00             0.1            0.1
 2019-12-04 00:30:00             0.2            0.1

【讨论】:

  • 谢谢,当我运行代码时出现此错误:“pandas.core.base.DataError: No numeric types to aggregate”似乎无法识别某些输入。当我在 Excel 中打开文件时,我有不同的日期格式,例如:16.00 和 04.00PM
  • 对我来说,它工作正常。也许您可以在df = df.resample('5T').mean() 上方添加df = df.astype('float')。您可以使用以下方法更改pandas (stackoverflow.com/questions/38067704/…) 中的日期时间格式
  • 感谢 Vikas,仍然无法正常工作。问题是我可以将一些日期转换为数字,但不是全部。所以我有这个错误:“ValueError:无法将字符串转换为浮点数:--”
  • 你能分享/链接print(df.info())的截图吗?
  • 问题与数据格式有关。如何更改数据格式?在原始数据中是 dd/mm/yyyy hh/mm。但是当我重新采样时,它会像 mm/dd/yyyy hh/mm 一样读取它,从而产生错误的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2019-08-01
  • 2019-01-13
  • 1970-01-01
  • 2014-11-12
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多