2017-07-18 51 views
1

比方說,我有一個pandas數據幀像這樣:值添加到不退出行

row_number  value 
1    21 
3    10234 
5    467 
6    395 
7    762 

# notice row_number == 2 and == 4 are missing 

非還存在排在那裏row_number < 10(例如),我d喜歡插入與value == 0的行。也就是說,我想獲得以下數據集:

row_number  value 
1    21 
3    10234 
5    467 
6    395 
7    762 
2    0 
4    0 
8    0 
9    0 

我甚至無法「選擇」這些不存在的行。我試過這個:

my_df[my_df["row_number"] == i for i in range(10) if i not in 
my_df["row_number"]] 

但是我得到了invalid syntax error

我怎麼能達到我想要的?謝謝。

回答

2

使用reindex通過rangeset_indexindexreset_index

df = df.set_index('row_number').reindex(range(1,10), fill_value=0).reset_index() 
print (df) 
    row_number value 
0   1  21 
1   2  0 
2   3 10234 
3   4  0 
4   5 467 
5   6 395 
6   7 762 
7   8  0 
8   9  0 

如果順序很重要:

a = df['row_number'].values.tolist() + np.setdiff1d(np.arange(1,10), df['row_number'].values).tolist() 
print (a) 
[1, 3, 5, 6, 7, 2, 4, 8, 9] 

df = df.set_index('row_number').reindex(a, fill_value=0).reset_index() 
print (df) 
    row_number value 
0   1  21 
1   3 10234 
2   5 467 
3   6 395 
4   7 762 
5   2  0 
6   4  0 
7   8  0 
8   9  0