我有一个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()为什么要这样做,有什么建议吗?
1条答案
按热度按时间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'
):