У меня есть этот фрейм данных:
data
0 [dic_inside_list_1]
1 [dic_inside_list_2]
...
Где:
dic_inside_list_1 = [{'tipo': 'ATIVA', 'nome': 'GABRIEL FRANCISCO DA CUNHA', 'advogado': False, 'advogados': [{'tipo': 'ADVOGADO_PARTE_ATIVA', 'nome': 'PATRICIA DE SIQUEIRA MANOEL DUARTE', 'advogado': True}]}]
dic_inside_list_2 = [{'tipo': 'ATIVA', 'nome': 'JOSÉ FRANCISCO DE OLIVEIRA', 'advogado': False, 'advogados': [{'tipo': 'ADVOGADO_PARTE_ATIVA', 'nome': 'JULIO TORSO ALCANTARA', 'advogado': True}]}, {'tipo': 'PASSIVA', 'nome': 'INDUSTRIAS MENTEN DE CARTONAGEM LTDA', 'advogado': False, 'advogados': []}]
Я хочу создать два новых столбца: «parte_passiva» и «parte_ativa» «parte_ativa» получает «nome»"из словаря, в котором" tipo "означает" ATIVA "," parte_passiva "получает" nome "из словаря, в котором" tipo "означает" PASSIVA "
Так что это должно выглядеть так:
data parte_ativa parte_passiva
0 [dic_inside_list_1] 'GABRIEL FRANCISCO DA CUNHA'
1 [dic_inside_list_2] 'JOSÉ FRANCISCO DE OLIVEIRA' 'INDUSTRIAS MENTEN DE CARTONAGEM LTDA'
...
Следующий код работал для "parte_ativa", поскольку он присутствует в обоих словарях:
df['parte_ativa']=df['data'].apply(lambda x: x[0]['nome'] if x[0]['tipo']=='ATIVA' else x)
Однако, когда я пытаюсь применить это к parte_passiva df['parte_passiva']=df['data'].apply(lambda x: x[1]['nome'] if x[1]['tipo']=='PASSIVA' else x)
, возникает ошибка, так как не все строки имеют'tipo' == 'PASSIVA'
IndexError: list index out of range
У кого-нибудь есть предложения по этому поводу?Я знаю, что внутри лямбда-выражения нельзя ввести пробное предложение.Есть ли способ использовать предложения, чтобы этого не происходило?