问题
这是因为您正在更改 DataFrame 的副本。
例子:
a, b, c, d = 1, 2, 3, 4
data_files = [a, b, c, d]
print(data_files)
# > [1, 2, 3, 4]
有副本:
for x in data_files:
x = 0
print(data_files)
# > [1, 2, 3, 4] # No change
通过索引列表:
for i in range(len(data_files)):
data_files[i] = 0
print(data_files)
# > [0, 0, 0, 0] # Change
解决方案
解决方案 1:索引列表
for i in range(len(data_files)):
data_files[i] = data_files[i].melt(['country'], var_name='year')
data_files[i] = data_files[i].rename(columns = {'value': names[i]}, inplace = False)
解决方案 2:覆盖列表中的元素
for i, df in enumerate(data_files):
df = df.melt(['country'], var_name='year')
df = df.rename(columns = {'value': names[i]}, inplace = False)
# Updating the list
data_files[i] = df
解决方案 3:覆盖整个列表(或拥有一个新列表)
new_dfs = []
for df in data_files:
df = df.melt(['country'], var_name='year')
df = df.rename(columns = {'value': names[i]}, inplace = False)
new_dfs.append(df)
# If needed:
data_files = new_dfs