为了账号安全,请及时绑定邮箱和手机立即绑定

比较 Pandas DataFrame 中的 2 列并填充第 3 列

比较 Pandas DataFrame 中的 2 列并填充第 3 列

汪汪一只猫 2022-01-05 11:26:56
我有一个 DF,里面有 2 个 int 列,“CNT”和“STG_TABLE_CNT”。我想添加一个新列“IS_MATCH”,如果“CNT”和“STG_TABLE_CNT”具有相同的值,则返回“Y”,否则返回“N”。我试过这个:if result['CNT'] == result['STG_TABLE_CNT']:    result['IS_MATCH'] = 'Y'else:    result['IS_MATCH'] = 'N'但这会引发以下错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().我意识到它正在寻找平等(真/假)我只是不知道如何解决这个问题以返回“Y”或“N”
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

使用numpy.where,它比applyor快itterating

import numpy as np
df['IS_MATCH'] = np.where(result['CNT'].eq(result['STG_TABLE_CNT']), 'Y', 'N')


查看完整回答
反对 回复 2022-01-05
?
DIEA

TA贡献1820条经验 获得超2个赞

result['CNT'] == result['STG_TABLE_CNT']给你一个完整的系列,并pandas抱怨它不知道如何将该系列转换为True或False。你真正想要的是


result['IS_MATCH'] = (result['CNT'] == result['STG_TABLE_CNT']).\

                         apply(lambda x: 'Y' if x else 'N')

或者


result['IS_MATCH'] = (result['CNT'] == result['STG_TABLE_CNT']).\

                         map({True: 'Y', False: 'N'})


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信