如何在python的pivot表中通过reindex添加新列?

时间:2017-10-31 20:49:26

标签: python pandas numpy dataframe

我有一个很长的原始数据框

ID    cols     even1 event2 event3 event4 event5 event6 
1      1        0      0       0      0     1       1   
1     16        9      1       0      0     7      11   
2      2        3      3       0      0    68      36   
2     25        1      0       1      1    97      27   
2     59        3      0       0      0    38      38   
2    118        4      0       1      1    33      10          
2    150        3      1       0      0     4       7   
.....

原始数据框上多个记录的一个userID。

然后我将其转换为数据透视表,

   df = df.pivot_table(df, index='ID', columns='cols', fill_value='0')

             event1       \     ...     event2                  \
cols    1   2   3   5   7   8   ...     1   2   3   5   7   8   ...   
ID                            ...                             ...                  
1       0  77   0   2   0   0   ...     2   4   1   0   0  12   ...
2       0   0   0   1   0   0   ...     0   3   3   0  11   2   ...
3       0   0   0   3   0   0   ...     1   2   6   0   4   5   ...
4       0   1   0   6   0   1   ...     9   0   0   0   1   6   ...

             ... event6 
cols   8   9   10  ...        236 249   
ID               ...                  
1      0   0   0   ...          0   0   
2      0   0   0   ...          0   0   
3      0   0   0   ...          0   0   
4      0   0   0   ...          0   0   
5      0   0   0   ...          0   0

似乎有些列从1到249错过了,所以我尝试使用此重新索引列

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

但重新索引它时会给我一个错误。

ValueError: cannot reindex from a duplicate axis

有谁知道如何解决这个问题?

最终的数据框应该类似于

      event1                \   ...                      event2          
cols   1   2   3   4   5   6   7   8 ...   1   2   3   4   5   6   7   8   ...
ID
1      0  77   0   0   2   0   0   0 ...   2   4   1   0   0   0   0  12
2      0   0   0   0   1   0   0   0 ...   0   3   3   0   0   0  11   2   ...
3      0   0   0   0   3   0   0   0 ...   1   2   6   0   0   0   4   5   ...
4      0   1   0   0   6   0   0   1 ...   9   0   0   0   0   0   1   6   ...

...
           ...      event6
cols   ...   247   248   249
ID     ...    0     0     0
1      ...    0     0     0
2      ...    0     0     0
3      ...    0     0     0
4      ...    0     0     0

0 个答案:

没有答案