簡體   English   中英

合並來自python中兩個不同列表的DF

[英]Merging DFs from two different lists in python

有兩個列表,其中元素是 DF 並且具有datetimeindex

lst_1 = [ df1, df2, df3, df4]   #columns are same here 'price' 

lst_2 = [df1, df2, df3, df4]    #columns are same here 'quantity'

我正在使用熊貓合並功能一一進行。 我試圖做一些我添加兩個列表並制作這樣的功能的東西:

def df_merge(df1 ,df1):
    p_q_df1 = pd.merge(df1,df1,  on='Dates') 
    return p_q_df1        

#this merged df has now price and quantity representing df1 from list! and list_2

我仍然必須再次申請每一對。 有沒有更好的方法,也許在循環中自動執行此操作?

考慮使用zip進行元素循環,它可以在列表理解中處理。

# DATES AS INDEX
final_lst = [pd.concat(i, j, axis=1) for i, j in zip(lst_1, lst_2)]

# DATES AS COLUMN
final_lst = [pd.merge(i, j, on='Dates') for i, j in zip(lst_1, lst_2)]

國際大學聯盟,

你可以連接你的 df 然后合並

dfs_1 = pd.concat(lst_1)
dfs_2 = pd.concat(lst_2)
pd.merge(dfs_1,dfs_2,on='Dates',how='outer') 
# change how to specify the behavior of the merge.

我假設您的數據框形狀相同,因此可以將它們連接起來。

如果要合並列表中的多個數據幀,可以使用標准 python 庫中的 reduce 函數使用外部合並來獲取每個可能的行。

from functools import reduce
lst_1 = [ df1, df2, df3, df4] 

df_merged = reduce(lambda  left,right: pd.merge(left,right,on=['Dates'],
                                            how='outer'), lst_1)
lst_1 = [ df1, df2, df3, df4]   #columns are same here 'price' 

lst_2 = [df1, df2, df3, df4]    #columns are same here 'quantity'

def merge(lst_1, lst_2):
   df = pd.DataFrame()
   for _df in lst_1:
      df = df.merge(_df, on='Dates')

   for _df in lst_2:
      df = df.merge(_df, on='Dates')

暫無
暫無

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

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