2015-06-20 178 views
0

我正在嘗試在基於日期列的熊貓數據框中填充缺失的數據值。填充缺失值pandas dataframe

df.head() 

      col1 col2 col3 
date    
2014-06-20 3 752  4028 
2014-06-21 4 752  4028 
2014-06-22 32 752  4028 
2014-06-25 44 882  4548 
2014-06-26 32 882  4548 

我嘗試以下

idx = pd.date_range(df.index[0], df.index[-1]) 

df = df.reindex(idx).reset_index() 

但是,我得到NaN的一種數據幀。

index  col1 col2 col3 
0 2014-06-20 NaN NaN NaN 
1 2014-06-21 NaN NaN NaN 
2 2014-06-22 NaN NaN NaN 
3 2014-06-23 NaN NaN NaN 
4 2014-06-24 NaN NaN NaN 

我在這裏錯過了什麼?

+1

你肯定有一個'DatetimeIndex'在你原來的DataFrame還是隻是字符串的日期? –

回答

3

你描述索引是否包含 ,而不是一個包含時間戳的pd.DatetimeIndex一個pd.Index會發生的行爲。

例如,

import pandas as pd 

df = pd.DataFrame(
    {'col1': [3, 4, 32, 44, 32], 
    'col2': [752, 752, 752, 882, 882], 
    'col3': [4028, 4028, 4028, 4548, 4548]}, 
    index = ['2014-06-20', '2014-06-21', '2014-06-22', '2014-06-25', '2014-06-26']) 

idx = pd.date_range(df.index[0], df.index[-1]) 
print(df.reindex(idx).reset_index()) 
#  index col1 col2 col3 
# 0 2014-06-20 NaN NaN NaN 
# 1 2014-06-21 NaN NaN NaN 
# 2 2014-06-22 NaN NaN NaN 
# 3 2014-06-23 NaN NaN NaN 
# 4 2014-06-24 NaN NaN NaN 
# 5 2014-06-25 NaN NaN NaN 
# 6 2014-06-26 NaN NaN NaN 

,而與此相反,如果你賺了指數一DatetimeIndex:

df.index = pd.DatetimeIndex(df.index) 

然後

print(df.reindex(idx).reset_index()) 
     index col1 col2 col3 
0 2014-06-20  3 752 4028 
1 2014-06-21  4 752 4028 
2 2014-06-22 32 752 4028 
3 2014-06-23 NaN NaN NaN 
4 2014-06-24 NaN NaN NaN 
5 2014-06-25 44 882 4548 
6 2014-06-26 32 882 4548 
+0

啊。我錯過了這個微妙的部分!謝謝。 – psteelk