[英]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.