python - 如何根据所选列中的值连接两个数据框?

标签 python pandas dataframe

我正在尝试根据每列中的值连接(合并)两个数据框。 例如,按 A 和 B 列中的值合并。 所以,有 df1

    A  B  C  D  L
0   4  3  1  5  1
1   5  7  0  3  2
2   3  2  1  6  4

和df2

    A  B  E  F  L
0   4  3  4  5  1 
1   5  7  3  3  2 
2   3  8  5  5  5

我想要一个这样结构的d3

    A     B     C     D     E     F     L
0   4     3     1     5     4     5     1
1   5     7     0     3     3     3     2
2   3     2     1     6     Nan   Nan   4
3   3     8     Nan   Nan   5     5     5

你能帮帮我吗?我已经尝试了合并和加入方法,但没有成功。

最佳答案

更新:(对于更新的 DF 和新的所需 DF)

In [286]: merged = pd.merge(df1, df2, on=['A','B'], how='outer', suffixes=('','_y'))

In [287]: merged.L.fillna(merged.pop('L_y'), inplace=True)

In [288]: merged
Out[288]:
   A  B    C    D    L    E    F
0  4  3  1.0  5.0  1.0  4.0  5.0
1  5  7  0.0  3.0  2.0  3.0  3.0
2  3  2  1.0  6.0  4.0  NaN  NaN
3  3  8  NaN  NaN  5.0  5.0  5.0

数据:

In [284]: df1
Out[284]:
   A  B  C  D  L
0  4  3  1  5  1
1  5  7  0  3  2
2  3  2  1  6  4

In [285]: df2
Out[285]:
   A  B  E  F  L
0  4  3  4  5  1
1  5  7  3  3  2
2  3  8  5  5  5

旧答案:

你可以使用pd.merge(..., how='outer')方法:

In [193]: pd.merge(a,b, on=['A','B'], how='outer')
Out[193]:
   A  B    C    D    E    F
0  4  3  1.0  5.0  4.0  5.0
1  5  7  0.0  3.0  3.0  3.0
2  3  2  1.0  6.0  NaN  NaN
3  3  8  NaN  NaN  5.0  5.0

数据:

In [194]: a
Out[194]:
   A  B  C  D
0  4  3  1  5
1  5  7  0  3
2  3  2  1  6

In [195]: b
Out[195]:
   A  B  E  F
0  4  3  4  5
1  5  7  3  3
2  3  8  5  5

关于python - 如何根据所选列中的值连接两个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40221516/

相关文章:

python - 如何为来自 2 个数据帧的多个变量创建散点图?

python - 如何根据强度用标记颜色绘制气旋的轨迹

python - 连接两个数据帧并克服行

python - 检查 10 个不同集合之间的共同元素

c++ - 在 C++ 中构建数据框

python - 获取百分比和计数 Python

python - 带有 MultiIndex : Group by year of DateTime level values 的 Pandas DataFrame

python - 对数据框进行透视,使唯一的列名成为标题,唯一的引用成为索引(稀疏矩阵)

python - 当重复的 ID 有付款日期时创建新列( Pandas 数据框)

python - 如何使用 python 将多个数据框中存在的特定列写入列表?