使用特定列连接两个熊猫数据框
Posted
技术标签:
【中文标题】使用特定列连接两个熊猫数据框【英文标题】:join two pandas dataframe using a specific column 【发布时间】:2015-08-15 13:28:06 【问题描述】:我是 pandas 的新手,我正在尝试根据一个特定列的相等性加入两个数据框。例如假设我有以下内容:
df1
A B C
1 2 3
2 2 2
df2
A B C
5 6 7
2 8 9
两个数据框具有相同的列,并且只有一列(例如 A)的值可能相等。我想要的输出是这样的:
df3
A B C B C
2 8 9 2 2
“A”列的值在两个数据框中都是唯一的。
谢谢
【问题讨论】:
【参考方案1】:pd.concat([df1.set_index('A'),df2.set_index('A')], axis=1, join='inner')
如果您希望将列 A
保持为非索引,则:
pd.concat([df1.set_index('A'),df2.set_index('A')], axis=1, join='inner').reset_index()
【讨论】:
有了这个好方法——A成为索引。这可能是 OP 想要的,但如果需要,您也可以使用reset_index
将其变成一列。
当然,可以通过在末尾添加.reset_index()
来重置索引。 pd.concat([df1.set_index('A'),df2.set_index('A')], axis=1, join='inner').reset_index()
是的 - 这就是我得到的:)【参考方案2】:
或者,您可以这样做:
df3 = df1.merge(df2, on='A', how='inner', suffixes=('_1', '_2'))
然后您可以跟踪每个值的来源
【讨论】:
后缀有什么作用? 为每个列名添加一个后缀,这样你就不会留下例如两列称为"B"
。当你有重复的列名时,你会得到非常意想不到的行为,比如 df3['B'].apply(lambda x: ...)
因为现在 df['B']
是一个 DataFrame 而不是一个系列。
太棒了。这实际上有很大帮助以上是关于使用特定列连接两个熊猫数据框的主要内容,如果未能解决你的问题,请参考以下文章