2016-08-24 27 views
1

我想這個簡單的操作:熊貓重新編制`方法`kwag不適用於列?

df = pd.DataFrame(np.random.rand(5,3)) 
df.columns = df.columns * 3 
print(df.reindex(columns=np.arange(9), method='ffill').head()) 

而且我得到這個:

  0 1 2   3 4 5   6 7 8 
0 0.593936 NaN NaN 0.805081 NaN NaN 0.930780 NaN NaN 
1 0.019330 NaN NaN 0.095645 NaN NaN 0.667744 NaN NaN 
2 0.826164 NaN NaN 0.295915 NaN NaN 0.259967 NaN NaN 
3 0.495695 NaN NaN 0.403194 NaN NaN 0.122684 NaN NaN 
4 0.365294 NaN NaN 0.648194 NaN NaN 0.621820 NaN NaN 

但是,當然,我希望看到這一點:

  0   1   2   3   4   5   6   7   8 
0 0.593936 0.593936 0.593936 0.805081 0.805081 0.805081 0.930780 0.930780 0.930780 
1 0.019330 0.019330 0.019330 0.095645 0.095645 0.095645 0.667744 0.667744 0.667744 
2 0.826164 0.826164 0.826164 0.295915 0.295915 0.295915 0.259967 0.259967 0.259967 
3 0.495695 0.495695 0.495695 0.403194 0.403194 0.403194 0.122684 0.122684 0.122684 
4 0.365294 0.365294 0.365294 0.648194 0.648194 0.648194 0.621820 0.621820 0.621820 

我可以實現我的目標與.fillna電池和切片,但有什麼更優雅? (請注意,我用的熊貓0.18.1)

+3

我想你的意思'df.reindex(列= np.arange(15))ffill(軸= 1)'?軸必須明確指定,否則它將沿着列「填充」。 – Psidom

+0

謝謝。不知道'ffill'是一個單獨的'DataFrame'方法。 – Kartik

回答

0

與這三列數據幀開始,

df 

#   0   3   6 
#0 0.563483 0.404885 0.336098 
#1 0.097173 0.141343 0.564055 
#2 0.715131 0.185852 0.361714 
#3 0.841248 0.028190 0.754315 
#4 0.475066 0.592953 0.839101 

要展開的列和沿向前行填寫,你可以先,然後reindexffill()axis = 1指定填充方向是沿着行:

df.reindex(columns=np.arange(15)).ffill(axis = 1) 

#   0   1   2   3   4   5   6   7   8   9   10   11   12   13   14 
#0 0.563483 0.563483 0.563483 0.404885 0.404885 0.404885 0.336098 0.336098 0.336098 0.336098 0.336098 0.336098 0.336098 0.336098 0.336098 
#1 0.097173 0.097173 0.097173 0.141343 0.141343 0.141343 0.564055 0.564055 0.564055 0.564055 0.564055 0.564055 0.564055 0.564055 0.564055 
#2 0.715131 0.715131 0.715131 0.185852 0.185852 0.185852 0.361714 0.361714 0.361714 0.361714 0.361714 0.361714 0.361714 0.361714 0.361714 
#3 0.841248 0.841248 0.841248 0.028190 0.028190 0.028190 0.754315 0.754315 0.754315 0.754315 0.754315 0.754315 0.754315 0.754315 0.754315 
#4 0.475066 0.475066 0.475066 0.592953 0.592953 0.592953 0.839101 0.839101 0.839101 0.839101 0.839101 0.839101 0.839101 0.839101 0.839101