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