我有一个熊猫数据框,其中有两列(“ no1”和“ no2”),一些值包含汉字,有些不包含汉字。
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
答案 0 :(得分:2)
我会这样用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)