我正在try 合并两个数据帧,并创建一个新的数据帧,其中只包含第一个数据帧中不存在的行.例如:

作为输入的数据帧:

enter image description here

我想要作为输出的数据帧:

enter image description here

你知道有没有办法做到这一点吗?如果你能帮助我,我将不胜感激!!谢谢,Eleni

推荐答案

创建一些数据时,我们有两个数据帧:

import pandas as pd
import numpy as np

rng = np.random.default_rng(seed=5)
df1 = pd.DataFrame(data=rng.integers(0, 5, size=(5, 2)))
df2 = pd.DataFrame(data=rng.integers(0, 5, size=(5, 2)))
# df1
   a  b
0  3  4
1  0  4
2  2  2
3  3  1
4  4  0

# df2
   a  b
0  1  1
1  2  2
2  0  0
3  0  0
4  0  4

我们可以用pandas.merge来组合相等的行.我们可以使用它的indicator=True特性来标记那些仅从左侧(和右侧,如果适用)开始的行.因为我们只需要左边唯一的那个些,所以我们可以使用how="left"进行合并以提高效率.

dfm = pd.merge(df1, df2, on=list(df1.columns), how="left", indicator=True)
# dfm

    a   b   _merge
0   3   4   left_only
1   0   4   both
2   2   2   both
3   3   1   left_only
4   4   0   left_only

很好,那么最终的结果就是使用合并

(dfm.loc[dfm._merge == 'left_only']
    .drop(columns=['_merge']))
    a   b
0   3   4
3   3   1
4   4   0

If您希望通过列的子集进行重复数据消除,这应该是可能的.在这种情况下,我会这样合并它,重复子集,这样我们就不会从左侧和右侧得到重复版本的其他列.

pd.merge(df1, df2[subset], on=subset, how="left", indicator=True)

Python相关问答推荐

使用SKLearn KMeans和外部生成的相关矩阵

计算每月过go x年的平均值

使用Curses for Python保存和恢复终端窗口内容

如何在telegram 机器人中发送音频?

除了Python之外,可以替代bare?

实现的差异取决于计算出的表达是直接返回还是首先存储在变量中然后返回

如何销毁框架并使其在tkinter中看起来像以前的样子?

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

如何在Python中使用时区夏令时获取任何给定本地时间的纪元值?

在Python和matlab中显示不同 colored颜色 的图像

比较两个数据帧并并排附加结果(获取性能警告)

pandas滚动和窗口中有效观察的最大数量

NP.round解算数据后NP.unique

Python,Fitting into a System of Equations

Python中绕y轴曲线的旋转

如何在Python中找到线性依赖mod 2

如何合并两个列表,并获得每个索引值最高的列表名称?

为什么if2/if3会提供两种不同的输出?

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

合并与拼接并举