比较数据帧中的行以更改值

2024-09-21 04:45:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3,有两个数据帧:df1和df2

df1
 num1 num2 num3 class
0 1    2   3     0
1 1    2   4     0
2 1    2   5     0
3 2    2   4     0



df2
 num1 num2 num3 class
0 1    2   3     1
1 1    2   4     1 

我想比较这两个数据帧,以便df1和df2中的行使用df2中的类值 如上例所示

结果如下:

df12
  num1 num2 num3 class
 0 1    2   3     1
 1 1    2   4     1
 2 1    2   5     0
 3 2    2   4     0

任何帮助都将不胜感激


Tags: 数据python3classdf1df2num2num1num3
1条回答
网友
1楼 · 发布于 2024-09-21 04:45:37

您可以在['num1', 'num2', 'num3']上执行outer merge,并且只保留df2中的class列(因此从df1中删除class):

df12 = (df1.merge(df2, on=['num1', 'num2', 'num3'], how = 'outer')
          .fillna(0)
          .drop('class_x', axis=1))

>>> df12
#    num1  num2  num3  class_y
# 0     1     2     3      1.0
# 1     1     2     4      1.0
# 2     1     2     5      0.0
# 3     2     2     4      0.0

编辑:根据@c的建议ᴏʟᴅsᴘᴇᴇᴅ, 首先从df1中删除class,然后进行合并会更干净一些:

df12 = (df1.drop('class', 1)
        .merge(df2, how='left')
        .fillna(0)
        .astype({'class' : int}))

相关问题 更多 >

    热门问题