[英]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 我想將它們全部連接在一起
我想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")
更動態的是使用reduce
, on
參數上也被刪除:
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.