簡體   English   中英

如何使用pandas完成一些缺少日期的時間序列數據

[英]How to complete time series data with some missing dates with pandas

我有像這樣的缺少日期的數據集。

date,value
2015-01-01,7392
2015-01-03,4928
2015-01-06,8672

這是我期望實現的目標。

date,value
2015-01-01,7392
2015-01-02,7392 # ffill 1st
2015-01-03,4928
2015-01-04,4928 # ffill 3rd
2015-01-05,4928 # ffill 3rd
2015-01-06,8672

我嘗試了很多,我閱讀了文檔,但我找不到解決方案。 我猜測使用df.resample('d',fill_method ='ffill'),但我還沒到達這里。 誰能幫我解決問題?

這就是我做的。

>>> import pandas as pd
>>> df = pd.read_csv(text,sep="\t",index_col='date')
>>> df.index = df.index.to_datetime()
>>> index = pd.date_range(df.index[1],df.index.max())

這里我從2015-01-01到2015-01-06獲得DatetimeIndex。

>>> values = [ x for x in range(len(index)) ]
>>> df2 = pd.DataFrame(values,index=index)

接下來,我將合並原始數據和DatetimeIndex。

>>> df + df2

             0   value
2015-01-01 NaN NaN
2015-01-02 NaN NaN
2015-01-03 NaN NaN
2015-01-04 NaN NaN
2015-01-05 NaN NaN
2015-01-06 NaN NaN

喃? 我很困惑。

>>> df3 = df + df2
>>> df3.info()

DatetimeIndex: 10 entries, 2015-01-01 to 2015-01-10
Data columns (total 2 columns):
value    0 non-null float64
dtypes: float64(1)

原始值為int,但它轉換為float。

我的錯是什么?

嘗試這個:

import numpy as np
df2 = pd.DataFrame(np.nan, index=index)
df.combine_first(df2).fillna(method='ffill')

combine_firstdf2 nan值替換為原始df存在的值。 然后,您可以使用fillna填充剩余的nan值。

暫無
暫無

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

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