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

我有一个 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”


汪汪一只猫
浏览 258回答 2
2回答

ibeautiful

使用numpy.where,它比applyor快itterating:import numpy as np df['IS_MATCH'] = np.where(result['CNT'].eq(result['STG_TABLE_CNT']), 'Y', 'N')

DIEA

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'})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python