Python 重新索引循环内的数据帧

Python 重新索引循环内的数据帧,python,pandas,dataframe,loops,reindex,Python,Pandas,Dataframe,Loops,Reindex,我试图在循环中重新索引一组数据帧中的列。这似乎只在循环之外起作用。请参见下面的示例代码 import pandas as pd data1 = [[1,2,3],[4,5,6],[7,8,9]] data2 = [[10,11,12],[13,14,15],[16,17,18]] data3 = [[19,20,21],[22,23,24],[25,26,27]] index = ['a','b','c'] columns = ['d','e','f'] df1 = pd.DataFrame

我试图在循环中重新索引一组数据帧中的列。这似乎只在循环之外起作用。请参见下面的示例代码

import pandas as pd

data1 = [[1,2,3],[4,5,6],[7,8,9]]
data2 = [[10,11,12],[13,14,15],[16,17,18]]
data3 = [[19,20,21],[22,23,24],[25,26,27]]
index = ['a','b','c']
columns = ['d','e','f']

df1 = pd.DataFrame(data=data1,index=index,columns=columns)
df2 = pd.DataFrame(data=data2,index=index,columns=columns)
df3 = pd.DataFrame(data=data3,index=index,columns=columns)

columns2 = ['f','e','d']

for i in [df1,df2,df3]:
    i = i.reindex(columns=columns2)

print(df1)

df2 = df2.reindex(columns=columns2)

print(df2)
df1并没有按照需要重新编制索引,但是,如果我在循环外部重新编制df2的索引,它就会工作。为什么呢

谢谢
安德鲁

发生这种情况的原因与发生这种情况的原因相同:

a = 5
b = 6
for i in [a, b]:
    i = 4

>>> a
    5
为什么??看

关于您的问题,一种解决方法是创建一个重新索引数据帧的
列表,如下所示:

reindexed_dfs = [df.reindex(columns=columns2) for df in [df1, df2, df3]]

然后重新分配
df1
df2
df3
。但无论如何,最好还是继续使用新创建的列表。

非常感谢@Camilo Martinez。这是一种享受,而且对于处理变量的最佳方式有着很好的背景。