Как я могу разбить строки в столбце, только когда встречается определенное слово? - PullRequest
2 голосов
/ 06 мая 2019

Я бы хотел сохранить деталь после слова «in» только в том случае, если она встречается в строке столбца. Проблема в том, что если это слово не встречается в строке, его первоначальное значение заменяется на NaN. Я хотел бы сохранить исходные значения, если слово «в» не появляется.

Я попытался разбить строку, используя str.split в столбце 'city':

    Rotterdam
    Den Haag
    Postcode 2288 in Rijswijk
    Postcode 2511 in Den Haag Centrum
    Delft
df.city.astype(str).str.split('in').str[1]

Фактические результаты:

    NaN
    NaN
    Rijswijk
    Den Haag Centrum
    NaN

Ожидаемые результаты:

    Rotterdam
    Den Haag
    Rijswijk
    Den Haag Centrum
    Delft

1 Ответ

2 голосов
/ 06 мая 2019

Одним из возможных решений является замена отсутствующих значений на исходный столбец:

df['new'] = df.city.astype(str).str.split(' in ').str[1].fillna(df.city)
print (df)
                                city                new
0                          Rotterdam          Rotterdam
1                           Den Haag           Den Haag
2          Postcode 2288 in Rijswijk           Rijswijk
3  Postcode 2511 in Den Haag Centrum   Den Haag Centrum
4                              Delft              Delft

Или выберите последние значения в списках с помощью -1 - решения, работающие одинаково, если только один in в данных:

df.city.astype(str).str.split(' in ').str[-1]

Еще одним решением от @Jon Clements является использование Series.str.rpartition:

df.city.str.rpartition(' in ')[2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...