如何在python中使用for循环生成多个数据帧?

时间:2019-10-18 16:23:09

标签: python pandas loops dataframe

我想使用for循环生成多个新的数据框,但是我的代码无法正常工作。

id   col
a      4
b      5
c      6

代码

l = [i for i in range(1,4)]

for i in l:
    df['col'+str(i)] = df['col']*i

它为我返回了一个新的df,其中包含3个新列。 但是我需要的结果是分别命名为df1df2df3的3个新数据框,分别带有新列。

如何使用循环生成多个新数据帧?

1 个答案:

答案 0 :(得分:0)

在您的示例中,并不清楚您要包含DataFrames的内容。

因此,这里有一些代码可以创建3个数据帧,分别称为DF1DF2DF3

每个都以1-4*idx作为唯一列。

请澄清您是否想要其他东西。

import pandas as pd

# Need to track the created DataFrames in some way. Using a dict here.
df_dict = dict()
for idx in [1, 2, 3]: #  Using list 1,2,3, but could be changed back to l or range().
    df_dict['DF'+str(idx)] = pd.DataFrame([1, 2, 3, 4])*idx

# This adds the key/value pairs as variables to the __locals__ dict. 
# Generally not best practice.
locals().update(df_dict)

print(DF1)
print(DF2)
print(DF3)

在上面的代码中,DFx是在字典中创建的以跟踪它们的创建,然后将它们添加到locals字典中。 我不会写这样的代码。

我的建议是直接使用生成的字典(df_dict)。

此外,您可以使用多层/多维DataFrame来解决使用此for idx in range(x)可能遇到的任何问题。如果您提供更多详细信息,我也许可以提出更好的方法。

干杯!