如何使用pandas迭代数据帧列

时间:2018-02-19 08:51:59

标签: python-3.x pandas jupyter-notebook

我有一个包含八列的数据框,我想迭代每一列并将每个迭代数据保存在新变量中。也就是在第一次迭代中,第一列值将保持不变,其他列值将更改为None并将此数据帧另存为新数据。在第二次迭代中,只有第二列将保存值,其他列值更改为无,保存为新数据框。最后,我将获得一个8数据帧,每个数据帧只有一列有值,其他列将保持无值。

1 个答案:

答案 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