Python 使用特定列连接两个数据帧
我是熊猫队的新手,我正在尝试基于一个特定列的相等性连接两个数据帧。例如,假设我有以下内容:Python 使用特定列连接两个数据帧,python,join,pandas,dataframe,Python,Join,Pandas,Dataframe,我是熊猫队的新手,我正在尝试基于一个特定列的相等性连接两个数据帧。例如,假设我有以下内容: 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”的值在两个数据帧中都是唯一的 谢谢 如果希望将列A保持为非索引,
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”的值在两个数据帧中都是唯一的
谢谢
如果希望将列A
保持为非索引,则:
pd.concat([df1.set_index('A'),df2.set_index('A')], axis=1, join='inner').reset_index()
或者,您可以执行以下操作:
df3 = df1.merge(df2, on='A', how='inner', suffixes=('_1', '_2'))
然后,您可以使用这个好方法跟踪每个值的原点——A成为索引。这可能是OP想要的,但如果需要,您也可以使用
reset\u index
将其转换为列。当然,可以通过在末尾添加.reset\u index()
来重置索引pd.concat([df1.set_index('A'),df2.set_index('A')),axis=1,join='inner')。reset_index()
yup-这就是我想说的:)后缀做什么?在每个列名中添加后缀,这样就不会留下两列名为“B”
。当您有重复的列名时,您会得到非常意外的行为,例如,df3['B'].apply(lambda x:…)
因为现在df['B']
是一个数据帧,而不是一个系列。太棒了。这实际上很有帮助
df3 = df1.merge(df2, on='A', how='inner', suffixes=('_1', '_2'))