Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用特定列连接两个数据帧_Python_Join_Pandas_Dataframe - Fatal编程技术网

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'))