2017-07-17 9 views
0

私はpandas DataFrame dfに日々のデータがあります。欠落しています(例:1980-12-25)。これらの日付をNaN値で追加するために、DataFrameのインデックスを再作成したいと思います。Reindex pandas不足している日付を記入するDataFrame

  date close 
None     
0 1980-12-12 28.75 
1 1980-12-15 27.25 
2 1980-12-16 25.25 
3 1980-12-17 25.87 
4 1980-12-18 26.63 
5 1980-12-19 28.25 
6 1980-12-22 29.63 
7 1980-12-23 30.88 
8 1980-12-24 32.50 
9 1980-12-26 35.50 

リストdatesは、必要なすべての日付でリストを生成しました。

[Timestamp('1980-12-12 00:00:00'), Timestamp('1980-12-15 00:00:00'), Timestamp('1980-12-16 00:00:00'), Timestamp('1980-12-17 00:00:00'), Timestamp('1980-12-18 00:00:00'), Timestamp('1980-12-19 00:00:00'), Timestamp('1980-12-22 00:00:00'), Timestamp('1980-12-23 00:00:00'), Timestamp('1980-12-24 00:00:00'), Timestamp('1980-12-25 00:00:00'), Timestamp('1980-12-26 00:00:00')] 

残念ながら、以下のreindexコマンドを実行すると、テーブルはNaNで完全に埋め尽くされます。

df.reindex(dates) 

私は、あなたがset_index()する必要があります私はあなたの質問に表示されるものと、すべてが細かいチェックアウト以下をチェックし、...

>>> type(df['date'][0]) 
<class 'pandas._libs.tslib.Timestamp'> 

>>> type(dates[0]) 
<class 'pandas._libs.tslib.Timestamp'> 

>>> dates[0] == df['date'][0] 
True 

答えて

0

を実行しました:

df 
     date close 
0 1980-12-12 28.75 
1 1980-12-15 27.25 
2 1980-12-16 25.25 
3 1980-12-17 25.87 
4 1980-12-18 26.63 
5 1980-12-19 28.25 
6 1980-12-22 29.63 
7 1980-12-23 30.88 
8 1980-12-24 32.50 
9 1980-12-26 35.50 

df['date'] = pd.to_datetime(df['date']) 
df.set_index('date', inplace=True) 
df.reindex(dates) 

df 
      close 
date    
1980-12-12 28.75 
1980-12-15 27.25 
1980-12-16 25.25 
1980-12-17 25.87 
1980-12-18 26.63 
1980-12-19 28.25 
1980-12-22 29.63 
1980-12-23 30.88 
1980-12-24 32.50 
1980-12-25 NaN 
1980-12-26 35.50 

新しいインデックスをどのように整列させるかを知るようにインデックスを設定する必要があります。これはあなたの期待される成果ですか?

+0

ありがとうアンドリュー!それがまさに問題でした。日付列が索引ではないことに気付かなかった。 – Andras

+0

すばらしい、喜んで助けてください。 –

関連する問題