2015-02-09 101 views
1

我嘗試了幾個這個主題的例子,但沒有結果。我讀像一個數據幀:熊貓重新編譯 - 填充缺失值列

Code,Counts 
10006,5 
10011,2 
10012,26 
10013,20 
10014,17 
10015,2 
10018,2 
10019,3 

我怎樣才能得到另一個數據框,如:

Code,Counts 
10006,5 
10007,NaN 
10008,NaN 
... 
10011,2 
10012,26 
10013,20 
10014,17 
10015,2 
10016,NaN 
10017,NaN 
10018,2 
10019,3 

基本上填補了「代碼」欄的缺失值?我嘗試了df.reindex()方法,但我無法弄清楚它是如何工作的。非常感謝。

回答

2

我會設置索引給你'代碼'列,然後reindex通過傳入一個新的數組根據你當前的索引,arange接受一個開始和停止參數(你需要加1到最後),然後reset_index這假定您的'代碼'值已經排序:

In [21]: 

df.set_index('Code', inplace=True) 
df = df.reindex(index = np.arange(df.index[0], df.index[-1] + 1)).reset_index() 
df 
Out[21]: 
    Code Counts 
0 10006  5 
1 10007  NaN 
2 10008  NaN 
3 10009  NaN 
4 10010  NaN 
5 10011  2 
6 10012  26 
7 10013  20 
8 10014  17 
9 10015  2 
10 10016  NaN 
11 10017  NaN 
12 10018  2 
13 10019  3 
+0

非常感謝!但是如果我必須在「代碼」索引中添加數據(例如從0到10006)呢? – 2015-02-09 16:37:39

+1

你應該能夠'concat',在這種情況下,在調用'reset_index'之前,爲你的其他數據設置索引爲'Code',然後調用'pd.concat([df,other_df])。reset_index() '這應該堆疊在一起,希望這是明確的 – EdChum 2015-02-09 16:42:09

+0

是的,對不起,這很有用,但我以前的評論並不清楚。我不必「添加」數據,但只需回到0用我的實際DataFrame ...我有一個數據庫與未分類和非連續的數據,我知道的唯一的是較低的'代碼'值(0)和更高,但在分析過程中,較低的「代碼」值不是恆定的(例如,現在數據集從108開始到15000,並且我想填充限值內外的值)。 – 2015-02-09 16:51:28