簡體   English   中英

合並不同列上的多個數據框

[英]Merging multiple dataframes on different columns

使用 Pandas 1.2.1

MRE:

df_a = pd.DataFrame({"A":[1,2,3,4], "B":[33, 44, 55, 66]})
df_b = pd.DataFrame({"B":[33, 44,99], "C":["v", "z", "z"]})
df_c = pd.DataFrame({"A":[3,4,77,55], "D":["aa", "bb", "cc", "dd"]})

使用上面創建的三個 dfs 我想將它們全部連接在一起

  1. df_a, df_b 共享列“B”因此他們加入列“B”
  2. df_a, df_c 共享列“A”,因此他們加入列“A”

我想left_join df_b 和df_c 到df_a。 目前這是我的方法:

merged_df = pd.merge(df_a, df_b, on=["B"], how="left")
merged_df = pd.merge(merged_df, df_c, on=["A"], how="left")

我知道工作正常但是我不能停下來認為有一種更簡單和更快的方法,在使用 reduce function 加入同一列上的多個 dfs 時有多個問題但是找不到我的問題的解決方案。

您可以刪除on參數,因此它通過 DataFrame 之間的列名稱的交集進行合並:

merged_df = pd.merge(df_a, df_b, how="left")
merged_df = pd.merge(merged_df, df_c, how="left")

更動態的是使用reduceon參數上也被刪除:

from functools import reduce
dfList = [df1, df2, df3]
df = reduce(lambda df1,df2: pd.merge(df1,df2,how="left"), dfList)

暫無
暫無

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

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