根据跨多个数据框的多种条件更新列值

时间:2019-05-28 15:26:04

标签: python pandas numpy dataframe

我有两个数据框,并尝试根据两个条件Tool and Location-来更新DF1中的Name

数据框-

第一个

DF1

NAME    Tool    Location
-       tool_1  location_1
-       tool_15 location_2 
-       tool_19 location_3 

第二个-

DF2

NAME    Tool    Location
name51  tool_1  location_1
name42  tool_15 location_2 
name33  tool_19 location_3

我尝试使用numpy进行条件检查这两个值,但是却收到指出的错误-

ValueError:只能比较标记相同的Series对象

我了解问题是两个数据框中的行号不同。我尝试过一些带有重置索引的解决方案,但都没有成功。

这是我尝试的查询-

DF1['NAME'] = np.where((DF1.Tool == DF2.Tool) & (DF1.Location== DF2.Location), DF2.Name)

可能会解决此问题?我无法将两个数据框都与行的确切长度匹配。

DF1的预期结果将是-

DF1

NAME    Tool    Location
name51  tool_1  location_1
name42  tool_15 location_2 
name33  tool_19 location_3

谢谢

1 个答案:

答案 0 :(得分:1)

合并和reindex()

{
  organization(login:"<your-org>") {
    auditLog(first:2) {
      edges {
        node {
          __typename
          ... on OrgInviteMemberAuditEntry {
            action
            actorIp
            actorLogin
            createdAt
            userLogin
            actorLocation{
              country
              city
            }
          }
        }       
      }
    }
  }
}

DF1=DF1.merge(DF2,on=['Tool','Location'],suffixes=('_x','')).reindex(DF1.columns,axis=1)