我有一个包含八列的数据框,我想迭代每一列并将每个迭代数据保存在新变量中。也就是在第一次迭代中,第一列值将保持不变,其他列值将更改为None并将此数据帧另存为新数据。在第二次迭代中,只有第二列将保存值,其他列值更改为无,保存为新数据框。最后,我将获得一个8数据帧,每个数据帧只有一列有值,其他列将保持无值。
答案 0 :(得分:3)
使用reindex
创建dictionary of DataFrames
dict comprehension:
d = {x: df[[x]].reindex(columns=df.columns, fill_value=None) for x in df.columns}
<强>示例强>:
df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0]})
print (df)
A B C D
0 a 4 7 1
1 b 5 8 3
2 c 4 9 5
3 d 5 4 7
4 e 5 2 1
5 f 4 3 0
d = {x: df[[x]].reindex(columns=df.columns, fill_value=None) for x in df.columns}
#print (d)
print (d['A'])
A B C D
0 a NaN NaN NaN
1 b NaN NaN NaN
2 c NaN NaN NaN
3 d NaN NaN NaN
4 e NaN NaN NaN
5 f NaN NaN NaN
print (d['B'])
A B C D
0 NaN 4 NaN NaN
1 NaN 5 NaN NaN
2 NaN 4 NaN NaN
3 NaN 5 NaN NaN
4 NaN 5 NaN NaN
5 NaN 4 NaN NaN