我有一个 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
,它比apply
or快itterating
:
import numpy as np df['IS_MATCH'] = np.where(result['CNT'].eq(result['STG_TABLE_CNT']), 'Y', 'N')
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'})
添加回答
举报
0/150
提交
取消