如何在数据框中添加一些列?

时间:2017-10-31 19:24:01

标签: python pandas dataframe

我有一个像这样的数据框

                                   value
msno              features   days      
B                 num_50     1        0
C                 num_100    3        1
A                 num_100    400      2  

我用过

df = df.unstack(level=-1,fill_value = '0')
df = df.unstack(level=-1,fill_value = '0')
df = df.stack()

然后df看起来像:

             value
days                         1        3      400
msno              features        
B                 num_50     0        0       0
                  num_100    0        0       0
C                 num_50     0        0       0
                  num_100    0        1       0
A                 num_50     0        0       0
                  num_100    0        0       2

现在,我想用0填充这个df。但仍保留原始数据,如下:

                            value
days                         1     2   3 4 ...    400
msno              features        
B                 num_50     0      0  0 0 ...     0
                  num_100    0      0  0 0 ...     0
C                 num_50     0      0  0 0 ...     0
                  num_100    0      0  1 0 ...     0
A                 num_50     0      0  0 0 ...     0
                  num_100    0      0  0 0 ...     2

我想添加1到400之间的列,并按0填充列。

有人可以告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:0)

使用reindex

df.columns=df.columns.droplevel()
df.reindex(columns=list(range(1,20))).fillna(0)

Out[414]: 
days          1    2  3    4    5    6    7    8    9    10   11   12   13  \
msno features                                                                
A    num_100   0  0.0  0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   
     num_50    0  0.0  0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   
B    num_100   0  0.0  0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   
     num_50    0  0.0  0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   
C    num_100   0  0.0  1  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   
     num_50    0  0.0  0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   
days            14   15   16   17   18   19  
msno features                                
A    num_100   0.0  0.0  0.0  0.0  0.0  0.0  
     num_50    0.0  0.0  0.0  0.0  0.0  0.0  
B    num_100   0.0  0.0  0.0  0.0  0.0  0.0  
     num_50    0.0  0.0  0.0  0.0  0.0  0.0  
C    num_100   0.0  0.0  0.0  0.0  0.0  0.0  
     num_50    0.0  0.0  0.0  0.0  0.0  0.0