2017-04-12 8 views
0

のために使用して再配置は、私は、データフレームのリストを持っています。複数のデータフレームの列のループ

私は列を並べ替える必要があります。しかし、forループは動作していないようです。

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

このよう

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

それは列がループで注文したが、なぜ変更されます。毎回各データフレームをループして列名の並べ替えを割り当てるのではありません。

アドバイスはありますか?

+0

理由があります'i'ではなく' df1'などになります。 –

+0

DFのリストの代わりにDFの辞書を使います。 – MaxU

+0

ええ、私は何が間違っているのを知った、pythonのnoobie私は – rocksailor

答えて

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 
+0

ありがとう、これは本当に役立ちます – rocksailor

関連する問題