Использование np.where для добавления столбца в панды с помощью функции, созданной самим - PullRequest
0 голосов
/ 24 октября 2018

У меня есть фрейм данных pandas с двумя столбцами ('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

1 Ответ

0 голосов
/ 24 октября 2018

Я бы подошел к этому так: 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...