gpt4 book ai didi

python - 使用 loc 更新 pandas 数据框中的行无法正常工作

转载 作者:行者123 更新时间:2023-12-02 03:29:46 25 4
gpt4 key购买 nike

我有一个名为输出的数据框 -

RAW_ENTITY_NAME   ENTITY_TYPE       ENTITY_NAME        IS_MAIN
01-03-2017 TNRMATDT 01 03 2017 1
04-02-2017 TNRSTRTDT 04 02 2017 1
documents TNRTYPE SIGHT 1
documents TNRDOCSBY NOT FOUND 1
accept TNRDTL accept 1
23 TNRDAYS 23 1

打印(df.dtypes())

RAW_ENTITY_NAME               object
ENTITY_TYPE object
ENTITY_NAME object
IS_MAIN object

注意 - ENTITY_TYPE = TNRTYPEENTITY_NAME = SIGHTIS_MAIN = 1 在数据帧中只会出现一次。

如果 ENTITY_TYPE 为 TNRTYPE、ENTITY_NAME = SIGHT 并且 IS_MAIN = 1,我想更新一些值。

temp = output.loc[(output['IS_MAIN'] == 1) & (output['ENTITY_TYPE'] == 'TNRTYPE'), 'ENTITY_NAME']
temp = temp.reset_index(drop=True)
temp = temp[0]
if (temp == 'SIGHT'):
output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE'] == 'TNRDOCSBY'), 'ENTITY_NAME'] = 'PAYMENT'

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE'].isin(['TNRDTL'])),
['ENTITY_NAME', 'RAW_ENTITY_NAME']] = 'NOT APPLICABLE'

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE'].isin(['TNRDAYS'])),
['ENTITY_NAME']] = '0'

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE'].isin(['TNRDAYS'])),
['RAW_ENTITY_NAME']] = ''

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE']=='TNRSTRTDT'),
['ENTITY_NAME', 'RAW_ENTITY_NAME']] = ''

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE']=='TNRMATDT'),
['ENTITY_NAME', 'RAW_ENTITY_NAME']] = ''

最终输出是 -

RAW_ENTITY_NAME   ENTITY_TYPE       ENTITY_NAME        IS_MAIN
01-03-2017 TNRMATDT 01 03 2017 1
04-02-2017 TNRSTRTDT 04 02 2017 1
documents TNRTYPE SIGHT 1
documents TNRDOCSBY PAYMENT 1
NOT APPLICABLE TNRDTL NOT APPLICABLE 1
TNRDAYS 0 1

正如您所看到的,除了前两行之外,所有内容都在更新,即 ENTITY_TYPE = TNRMATDT AND TNRSTRTDAT。

我想知道为什么下面的代码没有给出预期的结果。

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE']=='TNRSTRTDT'),
['ENTITY_NAME', 'RAW_ENTITY_NAME']] = ''

output.loc[(output['IS_MAIN'] == '1') & (output['ENTITY_TYPE']=='TNRMATDT'),
['ENTITY_NAME', 'RAW_ENTITY_NAME']] = ''

如果有人能找出我所犯的错误或告诉我任何解决方法,我会很高兴。

非常感谢。

最佳答案

我也遇到了同样的问题。您所要做的就是将 IS_MAIN 列设置为数字

df['IS_MAIN'] = df['IS_MAIN'].astype(int)

这应该可以正常工作。

关于python - 使用 loc 更新 pandas 数据框中的行无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com