使用第二个数据帧中的行连接数据帧,这些行在第一个数据帧中不存在,基于列的子集

扎南

我有2个大数据框如下:

df1

C1  C2  C3  V1
a   e   k   1
b   f   j   2
d   g   h   3    

df2

C1  C2  C3  V1
a   e   m   21
d   g   p   1
e   f   q   2
f   g   r   3

我想得到以下信息:

C1  C2  C3  V1
a   e   k   1
b   f   j   2
d   g   h   3
e   f   q   2
f   g   r   3

我只包含了df2C1 和 C2 中不存在的行df1df2即我删除了asa, e中已经存在的第一行df1

我在尝试:

df1['id'] = df1[['C1', 'C2']].astype(str).apply('_'.join, axis=1)
df2['id'] = df2[['C1', 'C2']].astype(str).apply('_'.join, axis=1)
df3 = df2[~df2['id'].isin(df1['id'])]
pd.concat([df1, df3])

有没有更好的方法可以使用一些内置函数来做到这一点,因为我经常遇到这种情况,列数不同。

将 df2 附加到 df1 并删除重复项

new=df1.append(df2).drop_duplicates(subset=['C1','C2'],keep='first')

打印(新)

 C1 C2 C3  V1
0  a  e  k   1
1  b  f  j   2
2  d  g  h   3
3  e  f  q   2
4  f  g  r   3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 Pyspark 查找第二个数据帧中未找到的行以及第一个数据帧的行号

如何仅将行从一个数据帧移动到第二个数据帧中不存在 ID 的另一个数据帧?

如果第一个数据帧中存在行,如何更新第二个数据帧的存在值

将一个熊猫数据帧合并到另一个熊猫数据帧,并从第二个数据帧中删除第一个数据帧中存在的值

根据第二个数据帧中 2 列中的值,为第一个数据帧中的某些列添加后缀

如何为第一个数据帧中匹配的特定列值的所有值获取第二个数据帧的数据?

基于第二个数据帧中的值的子集数据帧

从具有不同开始日期的第二个数据帧中过滤第一个数据帧的行

Pyspark:内部连接两个 pyspark 数据帧并选择第一个数据帧中的所有列和第二个数据帧中的几列

出现在第二个数据帧中的第一个数据帧的密钥并标记该事实

在第二个数据帧中映射负值,保留坐标并替换第一个数据帧

映射两个数据帧,计算第二个数据帧中的时间戳在第一个数据帧的日期时间范围内的事件

两个数据帧之间的条件格式,在第二个数据帧中,如果条件对第一个数据帧有效,我想备注为真

根据第二个数据帧汇总一个数据帧

如何基于一个数据帧中的一列和第二个数据帧中的两列合并两个数据帧

根据第二个数据帧替换数据帧中的列

如何根据单独数据帧中列值的存在过滤数据帧的行并从第二个数据帧追加列

在R中,如何根据第二个数据帧中的组保留一个数据帧中的所有行?

当第二个数据帧中存在匹配值时,替换数据帧列的值

使用R中的匹配将列的子集乘以第二个数据帧中的值

检查第一个数据帧值以任何第二个数据帧值开始

使用第二个数据帧行条件在数据帧中添加计数行

如何根据第二个中的可能值范围合并两个数据帧,但保留第一个中的值?

合并第二个数据帧中仅包含一列的数据帧

如何使用一个数据帧中的值来计算第二个数据帧中大于或小于它的值的总数?

2个数据库。如果第一个不存在值,则在第二个中查找/搜索

将一个数据帧中的NA值替换为第二个数据帧中的值

将一个数据帧中的值匹配到不同长度的第二个数据帧中的值

如何计算一个数据帧中的值并将结果传输到 R 中相应列下的第二个数据帧?