gpt4 book ai didi

python - 如何检查行值并用它们更新已经存在的列

转载 作者:行者123 更新时间:2023-12-05 07:07:32 25 4
gpt4 key购买 nike

我想按如下方式更新列 (Names):

  • 如果 Names 中单词的最后一个字符以 a 结尾且不是 pizza,则分配 c;
  • 如果 Names 中单词的最后一个字符以 oi 结尾,或者它是 pizza,然后分配m

要检查的列是

Names

choriocarcinoma
medulloblastoma
phenylketonuria
counterguerilla
lymphogranuloma
archipelago
braggadocio
chiaroscuro
decrescendo
violoncello
accelerando
afficionado
tachyarrhythmia
teratocarcinoma
caudillismo
cinquecento
countermemo
oligodendroglia
pleuropneumonia
pizza

要提取我所做的最后一个字符:

df['Names'] = [x.strip()[-1] for x in df['Names']]

为了检查和分配新值,我做了:

if df['Names'] == 'a': 
df['Names'] = 'c'
elif df['Names'] in ('o','i','pizza'):
df['Names'] = 'm'
else:
df['Names'] = 'Other'

但它不起作用。还有

def applyFunc(s):
if s == 'a' and s != 'pizza':
return 'c'
elif s in ('o','i', 'pizza'):
return 'm'
return 'other'

不起作用。

你能告诉我错误在哪里吗?

最佳答案

bool 选择通过组合 str.endswith()ampersand| 进行替代选择。使用嵌套的 np.where。警告; np.select 总是更好的选择

import numpy as np
a= (df.Names.str.endswith('a'))&(df.Names!='pizza')
b= (df.Names.str.endswith('o'))|(df.Names.str.endswith('i'))|(df.Names=='pizza')




df['N']=np.where(a, 'c', np.where(b,'m',df.Names))

enter image description here

关于python - 如何检查行值并用它们更新已经存在的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62110298/

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