gpt4 book ai didi

python - 使用np.where使用自创建函数向pandas添加列

转载 作者:行者123 更新时间:2023-12-01 01:30:08 26 4
gpt4 key购买 nike

我有一个包含两列(“no1”和“no2”)的 pandas 数据框,有些值包含中文字符,有些不包含中文字符。

no1                     no2
Paul Pogba 贝克汉姆
Gianluigi Buffon 莱奥内尔・梅西
莱奥内尔・梅西 莱奥内尔・梅西
Cristiano Ronaldo 莱奥内尔・梅西
STEVE HARRIS zinedine zidane
Cristiano Ronaldo Gianluigi Buffon

我想添加一列,如果两列中的任何一列中有一个包含中文字符的字符串,则该列的值为 1;如果两者都没有,则该列的值为 0。该函数如下所示:

def find_china_symbols(text):
counter = 0
if isinstance(text,str):
for char in text:
if ord(char) > 10000:
counter += 1
if counter > 0:
return True
else:
return False
else:
return False

以前我曾使用np.where来创建此列(如下所示),但在这种情况下它不起作用。为什么不呢?

df["Chinese"] = np.where(find_china_symbols(df["no1"]) | find_china_symbols(df["no2"]),1,0)

理想情况下,结果如下:

no1                     no2                  Chinese
Paul Pogba 贝克汉姆 1
Gianluigi Buffon 莱奥内尔・梅西 1
莱奥内尔・梅西 莱奥内尔・梅西 1
Cristiano Ronaldo 莱奥内尔・梅西 1
STEVE HARRIS zinedine zidane 0
Cristiano Ronaldo Gianluigi Buffon 0

最佳答案

我会用 applymap 来处理它

def find_china_symbols(text):
return any(map(lambda char: ord(char) > 1000, text))

df['Chinese'] = df.applymap(find_china_symbols).any(1).astype(int)

关于python - 使用np.where使用自创建函数向pandas添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52969535/

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