数据框到基于两列

时间:2018-02-19 12:55:58

标签: python pandas dataframe pivot-table

我的数据框如下所示:

df=
         columnDate    column_key      v1   v2 ... vN
0         01/01/2000       'a'         1    3
1         01/01/2000       'b'         2    4
2         02/01/2000       'a'         3    5
3         02/01/2000       'b'         4    6
...

我想将此数据框拆分为数据框字典,每个原始v1..vN列一个,并将columnDate中的可能值作为{{1}的新列和值作为索引。

对于此示例,所需的输出为:

columns_key

N.B:output['v1']= 01/01/2000 02/01/2000 'a' 1 3 'b' 2 4 output['v2']= 01/01/2000 02/01/2000 'a' 3 5 'b' 4 6 中的缺失值应填入np.nan

1 个答案:

答案 0 :(得分:1)

set_index使用unstack

df1 = df.set_index(['column_key','columnDate']).unstack()
print (df1)
                   v1                    v2           
columnDate 01/01/2000 02/01/2000 01/01/2000 02/01/2000
column_key                                            
'a'                 1          3          3          5
'b'                 2          4          4          6

然后在dict comprehension中按xs的第一级MultiIndex选择:

output = {x:df1.xs(x, axis=1) for x in df1.columns.levels[0]}
print (output)
{'v1': columnDate  01/01/2000  02/01/2000
column_key                        
'a'                  1           3
'b'                  2           4, 'v2': columnDate  01/01/2000  02/01/2000
column_key                        
'a'                  3           5
'b'                  4           6}
print (output['v1'])
columnDate  01/01/2000  02/01/2000
column_key                        
'a'                  1           3
'b'                  2           4

print (output['v2'])
columnDate  01/01/2000  02/01/2000
column_key                        
'a'                  3           5
'b'                  4           6