python-3.x - 合并和加入 wo pandas 数据框,不包括右侧数据框列
问题描述
我有两个数据框,如下所示。
***df1 = pd.DataFrame({'a':[1,1,2,2,3,3], 'b':[1,2,1,2,1,2], 'c':[1,2,4,0,0,2]})***
df1
a b c
0 1 1 1 1 1 2 2 2 2 1 4 3 2 2 0 4 3 1 0 5 3 2 2
***df2 = pd.DataFrame({'a':[1,1,2,2], 'b':[1,2,1,2], 'c':[1,5,6,2]})***
df2
a b c
0 1 1 1 1 1 2 5 2 2 1 6 3 2 2 2
我想应用两个数据框的内部连接并且不想要来自 df2 的列,所以尝试使用下面的代码。
***merged_df = df1.merge(df2, how='inner', left_on=["a", "b"], right_on=["a","b"])***
a b c_x c_y
0 1 1 1 1 1 1 2 2 5 2 2 1 4 6 3 2 2 0 2
从上面的代码中,没有手动删除 c_x 和 c_y,有什么方法可以不合并正确的数据帧(df2),我想要 df1 中的所有列,合并后不想要 df2 中的任何列。提前致谢。
解决方案
想法是仅过滤用于合并的列,here a,b
。如果希望通过两列合并on
参数应省略(然后熊猫通过两列的交集合并DataFrames
):
merged_df = df1.merge(df2[["a", "b"]])
像这样工作:
merged_df = df1.merge(df2[["a", "b"]], on=['a','b'])
推荐阅读
- python - TypeError 的 Python 问题:+ 的不支持的操作数类型:'int' 和 'str'
- vuejs2 - 以编程方式重置 vue-flatpickr 上的配置选项
- node.js - Speech to Text:使用 NodeJS 将麦克风流通过管道传输到 Watson STT
- java - 如果它们发生变化,Runnable 是否共享数据结构?
- javascript - 更改嵌套 html 元素的颜色后,悬停效果将不起作用
- node.js - 在 Ember 中使用 process.env 变量
- python - 如何从每个 url 创建一个数据框然后合并它们?
- javascript - 在屏幕上自动播放 GIF 并在滚动时停止
- android - 无法在 React Native 中使用 Require 加载图像
- python - 为什么执行递归调用后这条语句?