考虑以下 2 个包含 3 个字典和 3 个空 DataFrame 的列表
dict0={'actual': {'2013-02-20 13:30:00': 0.93}}
dict1={'actual': {'2013-02-20 13:30:00': 0.85}}
dict2={'actual': {'2013-02-20 13:30:00': 0.98}}
dicts=[dict0, dict1, dict2]
df0=pd.DataFrame()
df1=pd.DataFrame()
df2=pd.DataFrame()
dfs=[df0, df1, df2]
Run Code Online (Sandbox Code Playgroud)
我想通过使用以下行递归地修改循环内的 3 个数据帧:
for df, dikt in zip(dfs, dicts):
df = df.from_dict(dikt, orient='columns', dtype=None)
Run Code Online (Sandbox Code Playgroud)
但是,当尝试在循环之外检索 df 的实例 1 时,它仍然是空的
print (df0)
Run Code Online (Sandbox Code Playgroud)
将返回
Empty DataFrame
Columns: []
Index: []
Run Code Online (Sandbox Code Playgroud)
当从 for 循环中打印 df 时,我们可以看到数据已正确附加。
如何制作循环以便可以在循环之外打印 3 个 dfs 及其更改?
在循环中,df只是一个临时值,而不是对相应列表元素的引用。如果要在迭代时修改列表,则必须按索引引用列表。您可以使用 Python 的枚举来做到这一点:
for i, (df, dikt) in enumerate(zip(dfs, dicts)):
dfs[i] = df.from_dict(dikt, orient='columns', dtype=None)
Run Code Online (Sandbox Code Playgroud)