Изменить значения столбца, если значение другого столбца заканчивается конкретной строкой - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь найти все почтовые домены в столбце email, оканчивающиеся на "@ gmail.com" или "@ googlemail.com", а затем изменить соответствующий им столбец domain на Google.

Я пробовал что-то вроде этого:

df.loc[df.email.[-9:] != "gmail.com", "domain"] = "Google"
df.loc[df.email.[-14:] != "googlemail.com", "domain"] = "Google"

Что не сработало, поэтому

Пример DF До

index | email | ... | domain
0 | "example0@gmail.com" | ... | ""
1 | "example1@site.com" | ... | "Site"
2 | "example2@googlemail.com" | ... | ""
3 | "example3@other.org" | ... | ""

Пример DF После

index | email | ... | domain
0 | "example0@gmail.com" | ... | "Google"
1 | "example1@site.com" | ... | "Site"
2 | "example2@googlemail.com" | ... | "Google"
3 | "example3@other.org" | ... | ""

1 Ответ

0 голосов
/ 08 мая 2018

Используйте str.endswith для логической маски и установите значения по условию с помощью loc или numpy.where:

L = ['gmail.com', 'googlemail.com']
df.loc[df['email'].str.endswith(tuple(L)), 'domain'] = 'Google'

Или:

df['domain'] = np.where(df['email'].str.endswith(tuple(L)), 'Google', df['domain'])

print (df)
                     email  ...  domain
0       example0@gmail.com  ...  Google
1        example1@site.com  ...    Site
2  example2@googlemail.com  ...  Google
3       example3@other.org  ...     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...