Я пытаюсь создать новый столбец с именем 'contract_type', основанный на двух разных столбцах: источник и категория. contract_type
должно равняться значениям из source_map, за исключением случаев, когда ключи mobis_map находятся в столбце категории.
Например,
source category
ALLIAN ALL
ALLSB ASB
00CORP 100 01
00CORP 847 1
Карты для
source category contact_type
ALLIAN ALL ALLIAN
ALLSB ASB ALLSB
ALLSB ASB ALLSB
00CORP 100 01 00CORP
00CORP 847 1 MOBIS
, где mobis_map
и source_map
равны
source_map = {
'ALLIAN': 'ALLIAN',
'ALLSB': 'ALLIAN SB',
'8ASTARS2': '8a STARS',
'70': 'IT 70',
'OASIS': 'OASIS',
'OASIS SB': 'OASIS SB',
'VETS2': 'VETS',
'00CORP': '00CORP',
}
mobis_map = {
'874 1': 'MOBIS',
'874 4': 'MOBIS',
'874 6': 'MOBIS',
'874 7': 'MOBIS',
'874 8': 'MOBIS',
'874 9': 'MOBIS',
}
Я попытался сначала просто отобразить все на исходной карте как таковое,
df['contract_type'] = df['contract_type'].map(source_map)
и затем использовать np.where
для второго условного,
df['contract_type'] = np.where(
df['category'] in list(mobis_map.keys()),
df['contract_type'].map(mobis_map),
df['contract_type']
)
Но я продолжаю получать ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Как бы я поступил об этом?