簡體   English   中英

用新數據更新 dataframe 的最有效方法

[英]Most efficient way to update dataframe with fresh data

我有一個“存檔”dataframe 有數百列,每列代表一個時間序列(S1,S2 ...)

        S1  S2
Date1   5   5
Date2   8   10

我需要更新存檔,從幾個 dfs 導入新數據(每個新日期我有多個“new_data”df)。 因此,例如:

新數據1:

        S3
Date3   8

新數據2:

        S2  S4
Date3   9   5   

新數據3:

        S3
Date4   5

新數據4:

        S4
Date4   9

所以每個 new_data df 共享存檔 df 的一些列,但也可能有一些新列。 這是存檔 df 在更新后應該是這樣的:

        S1  S2  S3  S4
Date1   5   5   NaN NaN
Date2   8   10  10  9
Date3   NaN 9   8   5
Date4   NaN NaN 5   9

我從這個問題中看到,我可以將存檔 df 與 new_data dfs 外部合並,然后合並合並將創建的重復列(_x 和 _y):

dataframes = [new_data1, new_data2, new_data3, new_data4]

for i in dataframes:
    # Merge the dataframe
    archive = archive.merge(i, how='outer', on='Date')

    # Get the series names
    series_names = i.columns

    # Combine duplicate columns
    for series_name in series_names:
       if series_name+"_x" in archive.columns:
           x = series_name+"_x"
           y = series_name+"_y"
           archive[series_name] = archive[y].fillna(archive[x])
           archive.drop([x, y], 1, inplace=True)

我想知道是否有更有效的方法來做同樣的事情。 謝謝

您所描述的聽起來像是 SQL 系統的“升級”。 pandas 中的等價物是combine_first

for i in dataframes:
    archive = i.combine_first(archive)

暫無
暫無

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

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