如何避免需要动态创建变量?

How to avoid need for creating variable dynamically?

我正在考虑从几个单独的帧创建一个大数据帧 (pandas)。数据组织在 MF4 文件中,源文件的数量因每个周期而异。目标是让这个过程自动化。

数据帧的创建:

df = (MDF('File1.mf4')).to_dataframe(channels)
df1 = (MDF('File2.mf4')).to_dataframe(channels)
df2 = (MDF('File3.mf4')).to_dataframe(channels)

然后合并这些数据帧:

df = pd.concat([df, df1, df2], axis=0)

如何在不为 df、df1 等动态创建变量的情况下执行此操作?还是没有别的办法?

我将所有文件路径都放在一个数组中,格式如下:

Filepath = ['File1.mf4', 'File2.mf4','File3.mf4',]

现在我正在考虑遍历它并动态创建数据帧 df,df1.df1000.... 这里有什么建议吗?

编辑这里是完整代码:

df = (MDF('File1.mf4')).to_dataframe(channels)
df1 = (MDF('File2.mf4')).to_dataframe(channels)
df2 = (MDF('File3.mf4')).to_dataframe(channels)

#The Data has some offset:

x = df.index.max() 
df1.index += x 
x = df1.index.max()
df2.index += x

#With correct index now the data can be merged
df = pd.concat([df, df1, df2], axis=0)

试试这个:

df_list = [(MDF(file)).to_dataframe(channels) for file in Filepath]
df = pd.concat(df_list)

我解释你的问题的方式是你有一个你想要的预定义列表。所以只是:

l = []
for f in [ list ... of ... files ]:
    df = load_file(f)  # however you load it
    l.append(df)

big_df = pd.concat(l)
del l, df, f  # if you want to clean it up

因此,您无需为数据子部分手动指定变量名称。如果您还想在各个文件之间进行检查或列重命名,您也可以将其放入 for 循环(或者,如果您想简化为列表理解,则放入 load_file 函数体) .