Выбор строк в соответствии с критериями int и string - PullRequest
0 голосов
/ 07 мая 2018

У меня есть датафрейм, который выглядит так:

    Capital Social  Mark    Porte
0   12345           B 
1   0               A
2   0               A
3   12345631        A

Если Capital Social == 0 и Mark == A, я хочу превратить Porte в Big. Итак, я запускаю следующий код:

df['Porte'].loc[(df['Capital Social'] == 0) & (df['Mark'] == 'A')]='Big'

Однако, когда я запускаю его, я получаю такой же результат:

    Capital Social  Mark    Porte
0   12345           B 
1   0               A
2   0               A
3   12345631        A

Если я print(df['Capital Social'].dtypes), я получаю Int64 в результате.

Если я print(df['Mark'].dtypes), я получаю object в результате. Я попытался запустить df['Mark']=df['Mark'].astype(str), но результат продолжает оставаться объектом. Это проблема или что мне не хватает?

Ответы [ 2 ]

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

Вы действительно близко:

df.loc[(df['Capital Social'] == 0) & (df['Mark'] == 'A'), 'Porte']='Big'
0 голосов
/ 07 мая 2018

Правильная форма

df.loc[(df['Capital Social'] == 0) & (df['Mark'] == 'A'), 'Porte'] = 'Big'

df['Porte'] возвращает представление / копию, и вызов loc изменит копию вместо этого, оставив исходный фрейм данных без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...