如何避免动态创建变量



我正在考虑从几个单独的帧创建一个大数据帧(panda(。数据组织在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)

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

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函数体中(。

试试这个:

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

相关内容

  • 没有找到相关文章

最新更新