pandas asfreq()在未指定方法时删除数据

iezvtpos  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一个5天时间序列的 Dataframe (Sal),每15(ish)分钟有一个数据点。我需要插值这些值来估计每分钟的值。

import pandas as pd
Sal = pd.DataFrame({'DateTime' : ['2020-03-02 18:58:23', '2020-03-02 19:13:22', '2020-03-02 19:28:23'], 'Salinity' : [25.5, 28, 30]})

我正在将时间数据(DateTime)格式化为时间序列对象:

Sal['DateTime'] = pd.to_datetime(Sal['DateTime'])

然后,我将DateTime数据指定为索引,展开数据框,以便每分钟都有一行:

Sal = Sal.set_index('DateTime').asfreq('T', method = 'ffill')

这是可行的,我得到了一个完全填充的 Dataframe 。但是我不想要填充的结果,而是nans,以便以后插值,所以我没有指定方法

Sal = Sal.set_index('DateTime').asfreq('T')

这样,在我收集的数据之间就剩下了nan值,但是我的数据在 Dataframe 的后半部分消失了,所以我剩下了几天的nans,没有多大用处。即使在这个小样本帧上,中间值(28)也被nan替换了
关于asfreq()为什么要这样做,有什么建议吗?

7nbnzgx9

7nbnzgx91#

这应该工作正常如果你正确转换为日期时间
'%d-%m-%Y %H:%M:%S'不是您数据的有效格式。由于您有errors = 'coerce',因此转换为NaN不会引发任何错误。
使用'%Y-%m-%d %H:%M:%S'(假设YYYY-MM-DD,否则YYYY-DD-MM为'%Y-%d-%m %H:%M:%S'):

Sal['DateTime'] = pd.to_datetime(Sal['DateTime'], format = '%Y-%m-%d %H:%M:%S', errors = 'coerce')

相关问题