我正在尝试根据两个不同的列(源和类别)创建一个名为“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().
我该怎么做?