pandas - Есть ли способ скопировать значение из одного столбца данных в другой на основе условия? - PullRequest
3 голосов
/ 26 апреля 2020

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

A     B                            
55    {'created by':Max,'id':22}   
38    {}                           
44    {'created by':John,'id':11}  

Я хочу создать новый столбец, который содержит значение 'id' из столбца B, но если словарь пуст, он должен скопировать вместо этого целое число из столбца А.

Я пытался

df['C'] = [df.A[x] if df.B[x] == {} else df.B[x]['id'] for x in df]

, но он возвращает KeyError: 'id', который, как я полагаю, говорит, что нет ключа 'id'? Разве оператор if не исправит то, что ??

Я также попытался

df['C'] = [df.A if df.B[x] == {} else df.B[x]['id'] for x in df]

, но это копирует весь столбец A как объект в каждую ячейку в столбце C

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

A    B                             C
55  {'created by':Max,'id':22}     22 
38  {}                             38
44  {'created by': John,'id':11}   11

1 Ответ

3 голосов
/ 26 апреля 2020

Давайте попробуем

df['C']=df.B.str.get('id').fillna(df.A)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...