Изменение значений в фрейме данных панд с условием - PullRequest
0 голосов
/ 30 ноября 2018

Учитывая этот фрейм данных;

df = pd.DataFrame({'col1': ['apple','lemon','orange','grape'],
                   'col2':['franceCNTY','italy','greeceCNTY','spain']})

Я бы хотел изменить значения в col2 с этим правилом;если значение содержит CNTY, оставьте его, так как в противном случае установите значение Nan.

Итак, итоговый кадр данных будет содержать следующие значения:

df2 = pd.DataFrame({'col1': ['apple','lemon','orange','grape'],
                   'col2':['franceCNTY',np.nan,'greeceCNTY',np.nan]})

Как я могу изменитьэти значения?Спасибо

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Краткое введение в панд учебник

df2['col2'] = df['col2'].apply(lambda name: np.nan if 'CNTY' in name else name)

print(df2)
col1   col2
0   apple    NaN
1   lemon  italy
2  orange    NaN
3   grape  spain
0 голосов
/ 30 ноября 2018

where

Вы можете использовать where на месте или не на месте:

df['col2'] = df['col2'].where(df['col2'].str.contains('CNTY'))

print(df)

     col1        col2
0   apple  franceCNTY
1   lemon         NaN
2  orange  greeceCNTY
3   grape         NaN

# in place version
df['col2'].where(df['col2'].str.contains('CNTY'), inplace=True)
0 голосов
/ 30 ноября 2018

Я думаю, что проще всего использовать str.contains с loc:

df.loc[~df.col2.str.contains('CNTY'),'col2'] = np.nan

>>> df
     col1        col2
0   apple  franceCNTY
1   lemon         NaN
2  orange  greeceCNTY
3   grape         NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...