python pandas - 使用 for 循环编辑多个 DataFrame

jim*_*iat 5 python pandas

考虑以下 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 及其更改?

Bla*_*cho 5

在循环中,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)