我的数据框如下所示:
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
答案 0 :(得分:1)
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