簡體   English   中英

循環存儲和添加Pandas DataFrame

[英]Storing & Adding Pandas DataFrame In A Loop

多虧了Generate_Dataframe函數,我有一個每次生成隨機結果的循環。 因此,名稱列保持不變,但我的“結果”列始終是不同的浮點值。

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

因此,當我運行循環時,我正在生成類似上面的數據幀,因此我希望每次都能更新/添加Result列。

for x in range(1,5):
    New_DataFrame = Generate_DataFrame()

我一直無法找到一種存儲數據框的方法。 優化速度會很棒。 提前致謝!

IIUC您正在使用name列(如索引)。 您應該將它們放在此處,然后更新/添加變得微不足道。

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

如果要存儲數據框,我認為最好的方法是保存到pickle / csv文件中。 df.to_pickle(FILE_NAME)/df.to_csv(FILE_NAME)

您可以閱讀: 如何使用Pandas存儲數據框

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM