Python 储存及保养;在循环中添加数据帧
由于我的Generate_Dataframe函数,我有一个循环,每次都会生成随机结果。因此名称列保持不变,但我的“Result”列始终是不同的浮点值Python 储存及保养;在循环中添加数据帧,python,pandas,Python,Pandas,由于我的Generate_Dataframe函数,我有一个循环,每次都会生成随机结果。因此名称列保持不变,但我的“Result”列始终是不同的浮点值 def Generate_Dataframe(): #Do Some Stuff return DataFrame 我得到的一个例子是 DataFrame Name 1 Name 2 Result Joe Smith 5.5 Jake Smith
def Generate_Dataframe():
#Do Some Stuff
return DataFrame
我得到的一个例子是
DataFrame
Name 1 Name 2 Result
Joe Smith 5.5
Jake Smith 4.5
Jim Smith 2.5
Joanne Smith 1.5
因此,当我运行我的循环时,我会生成像上面一样的数据帧,我希望每次都能够更新/添加结果列
for x in range(1,5):
New_DataFrame = Generate_DataFrame()
我还没有找到存储数据帧的方法。优化速度会很好。提前谢谢 如果要存储数据帧,我认为最好的方法是保存到pickle/csv文件中。 df.to_pickle(文件名)/df.to_csv(文件名)
您可以阅读:IIUC您正在使用
名称
列,如索引。您应该将它们放在那里,然后更新/添加就变得微不足道了
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
你不必这样做。但我会这样做:
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
循环
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