我想使用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个新列。
但是我需要的结果是分别命名为df1
,df2
和df3
的3个新数据框,分别带有新列。
如何使用循环生成多个新数据帧?
答案 0 :(得分:0)
在您的示例中,并不清楚您要包含DataFrames的内容。
因此,这里有一些代码可以创建3个数据帧,分别称为DF1
,DF2
和DF3
。
每个都以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)
可能遇到的任何问题。如果您提供更多详细信息,我也许可以提出更好的方法。
干杯!