python - python中多列的索引匹配

标签 python pandas numpy dataframe merge

我有两个大小不同的 pandas 数据框。两个数据框看起来像

df1 = 

x   y   data
1   2   5
2   2   7
5   3   9
3   5   2

另一个数据框看起来像:

df2=

x   y   value
5   3   7
1   2   4
3   5   2
7   1   4
4   6   5
2   2   1
7   5   8

我正在尝试合并这两个数据帧,以便最终数据帧期望具有相同的 x 和 y 组合以及各自的值。我期待这种格式的最终​​数据帧:

x   y   data    value
1   2   5      4
2   2   7      1
5   3   9      7
3   5   2      2

我尝试了这段代码,但没有得到预期的结果。

dfB.set_index('x').loc[dfA.x].reset_index()

最佳答案

使用merge ,默认情况下 how='inner' 因此可以省略,如果仅在同一列上连接,参数 on 也可以省略:

print (pd.merge(df1,df2))
   x  y  data  value
0  1  2     5      4
1  2  2     7      1
2  5  3     9      7
3  3  5     2      2

如果实际数据中有多个相同的列名,请使用:

print (pd.merge(df1,df2, on=['x','y']))

   x  y  data  value
0  1  2     5      4
1  2  2     7      1
2  5  3     9      7
3  3  5     2      2

关于python - python中多列的索引匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40290348/

相关文章:

python - 多次游戏后程序未退出?

python - Mac 上 cx_Oracle 安装错误

python - 根据另一列值划分同一列中的行

python - 使用 OpenCV (Python) 查找曲线坐标

python - 解释一个python结构

显示 MessageBox 时出现 Python 新 TKinter 窗口

python - Pandas :保留重复项时填写缺失的日期

python - Groupby 名称用所有列中的最大值替换值 pandas

python - 切片 numpy 数组不会修改原始数组

python - 为什么 Scipy 的 ndimage.map_coordinates 对于某些数组没有返回任何值或返回错误的结果?