熊猫重复替换多个值

时间:2020-08-08 16:23:41

标签: pandas

我正在尝试将一行中的多个值替换为一个值。在下面的输出中,如果任何一行至少有一个'YES',则应将其替换为'YES',并且如果一行中的所有值均为'NO' '然后应将其替换为'否'。

bcc_new.DOCUMENT_SUBMITTED.value_counts()

Output:

NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO       212036
NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO         29549
NO, NO, NO, NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO        26975
NO, NO, NO, NO, NO, NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO        23588
NO, NO, NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO         4643
NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, YES, NO, NO, NO, NO, NO        2580
NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, YES, NO, NO, NO        1826
NO, NO, NO, NO, NO, NO, NO, NO, NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO         1151
NO, NO, NO, NO, NO, NO, NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO         1141
NO, YES, NO, NO, NO, NO, NO, NO, NO, NO, NO, NO, YES, NO, NO, NO, NO, NO, NO, NO         648

Expected output:
YES  212036
NO   29549
YES  26975
YES  23588

我尝试了此查询,但它不起作用。需要帮助!

bcc_new.loc[bcc_new['DOCUMENT_SUBMITTED'].isin(['YES']).any()]='YES'
bcc_new.loc[bcc_new['DOCUMENT_SUBMITTED'].isin(['NO']).all()]='NO'

1 个答案:

答案 0 :(得分:1)

您的bcc_new['DOCUMENT_SUBMITTED']可能是对象列,因此您可以先执行以下操作:

o = bcc_new['DOCUMENT_SUBMITTED']
is_yes = (o.str.split(',\s+', expand=True) == 'YES').any(axis=1)
is_yes.value_counts()

这将为您提供以True和False为键的值,但是您可以在之后将它们映射为Yes和No

编辑

如果您想将值映射为“是”或“否”,您可以这样做:

counts = is_yes.value_counts()
counts.index = counts.index.map({True: 'YES', False: 'NO'})
相关问题