【发布时间】:2020-09-26 22:21:15
【问题描述】:
假设我有以下 2 个熊猫数据框:
import pandas as pd
A = [174,-155,-931,301]
B = [943,847,510,16]
C = [325,914,501,884]
D = [-956,318,319,-83]
E = [767,814,43,-116]
F = [110,-784,-726,37]
G = [-41,964,-67,-207]
H = [-555,787,764,-788]
df1 = pd.DataFrame({"A": A, "B": B, "C": C, "D": D})
df2 = pd.DataFrame({"E": E, "B": F, "C": G, "D": H})
如果我使用join=outer 执行concat,我会得到以下结果数据框:
pd.concat([data1,data2], join='outer')
如果我这样做df1.combine_first(df2),我会得到以下信息:
df1.set_index('B').combine_first(df2.set_index('B')).reset_index()
如果我执行pd.merge(df1, df2),我会得到以下与concat 产生的结果相同的结果:
pd.merge(data1, data2, on=['B','C','D'], how='outer')
最后,如果我执行df1.join(df2, how='outer'),我会得到以下信息:
df1.join(df2, how='outer', on='B', lsuffix='_left', rsuffix='_right')
我不完全理解每种方法产生不同结果的方式和原因。
【问题讨论】:
-
@LazyCoder 不完全,不。因为您发布的问题仅询问
mergevsconcat,而我的问题除了mergevsconcat之外还询问joinvscombine_first。 -
你问了很多事情。如果你不知道它们是什么,你为什么要问“差异”?--找出每个是什么。如果您认为您知道它们是什么,那么您如何需要“差异”-这甚至意味着什么?无论哪种方式,都给出定义,展示和应用研究并询问 1 个明确的特定非重复问题,关于您是如何被困在特定点上的。 How to Ask
-
请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图片中包含图例/键和说明。
标签: python pandas dataframe join concatenation