Storing & Adding Pandas DataFrame In A Loop
由于我的Generate_Dataframe函数,我有一个循环,每次都会生成随机结果。 因此名称列保持不变,但我的"结果"列始终是不同的浮点值。
1 2 3 | def Generate_Dataframe(): #Do Some Stuff return DataFrame |
我得到的一个例子就是......
1 2 3 4 5 6 | DataFrame Name 1 Name 2 Result Joe Smith 5.5 Jake Smith 4.5 Jim Smith 2.5 Joanne Smith 1.5 |
因此,当我运行我的循环时,我正在生成如上所述的数据帧,我希望每次都能够更新/添加Result列。
1 2 | for x in range(1,5): New_DataFrame = Generate_DataFrame() |
我一直无法找到存储数据帧的方法。 优化速度会很棒。 提前致谢!
IIUC你正在使用像索引这样的
1 2 3 4 5 6 7 8 9 10 11 | def gen_df(): midx = pd.MultiIndex.from_tuples([ ('Joe', 'Smith'), ('Jake', 'Smith'), ('Jim', 'Smith'), ('Joanne', 'Smith') ], names=['Name 1', 'Name 2']) return pd.DataFrame( dict(Result=np.random.rand(4)), midx ) |
选项1
你不必这样做。 但这就是我这样做的方式:
1 2 3 4 5 6 7 8 9 10 | from functools import reduce reduce(pd.DataFrame.add, (gen_df() for _ in range(1, 5))) Result Name 1 Name 2 Joe Smith 2.400550 Jake Smith 2.222812 Jim Smith 2.601639 Joanne Smith 0.503774 |
选项2
在循环中
1 2 3 4 5 6 7 8 9 10 11 12 13 | df = gen_df() for _ in range(1, 5): df += gen_df() df Result Name 1 Name 2 Joe Smith 1.998055 Jake Smith 2.268697 Jim Smith 2.815204 Joanne Smith 2.253301 |
如果你想存储数据帧我认为最好的方法是保存到pickle / csv文件。
df.to_pickle(FILE_NAME)/df.to_csv(FILE_NAME)
您可以阅读:如何使用Pandas存储数据框