多个数据帧列使用for循环重新排列

时间:2017-04-12 13:11:04

标签: python pandas

我有一个包含这些列的数据框列表

Color Date     Fruit     Num

都有相同的列。

我需要重新安排专栏。但是,for循环似乎不起作用。

for i in [df1,df2,df3,df4,df5,df6]:
    i = i[['Date','Fruit','Num','Color']]  

这样

df1 = df1[['Date','Fruit','Num','Color']]

它改变了列顺序,但为什么不在循环中。不是每次循环遍历每个数据帧并分配列名称的重新排序。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

考虑使用DF的字典而不是DF列表:

给定数据集:

In [470]: df1
Out[470]:
    c   b   a
0  63  85  49
1  51  20  43
2  92  67  93
3  58  11  96
4  19  70  82

In [471]: df2
Out[471]:
    b   c   a
0  83  53   0
1  45  23  43
2  49  64  93
3  76  34  38
4  98  78  88

In [472]: dfs = {'df1':df1, 'df2':df2}

解决方案:

In [473]: for k in dfs.keys():
     ...:     dfs[k] = dfs[k][['a','b','c']]
     ...:

In [474]: dfs
Out[474]:
{'df1':     a   b   c
 0  49  85  63
 1  43  20  51
 2  93  67  92
 3  96  11  58
 4  82  70  19, 'df2':     a   b   c
 0   0  83  53
 1  43  45  23
 2  93  49  64
 3  38  76  34
 4  88  98  78}

In [475]: dfs['df1']
Out[475]:
    a   b   c
0  49  85  63
1  43  20  51
2  93  67  92
3  96  11  58
4  82  70  19

In [476]: dfs['df2']
Out[476]:
    a   b   c
0   0  83  53
1  43  45  23
2  93  49  64
3  38  76  34