Справочная информация: я ищу значения df_source в df_map. Я не получаю строковый тип данных для совпадений при индексировании, указанном ниже.
Код: Выделить всё
# Just for reproducing. Note that we need to replace ```None``` with ```Nan```, as that is the case when we load the original dataframe from excel. But i cannot create a dict with ```Nan``` and so used ```None```
df_map = pd.DataFrame({'person': {0: 'jack',
1: 'jack',
2: 'jack',
3: 'harry',
4: 'harry',
5: 'harry'},
'country': {0: 'GE', 1: 'AUS', 2: 'AUS', 3: 'UK', 4: 'SP', 5: 'BR'},
'product': {0: 'AA', 1: 'NT', 2: 'NT', 3: 'AA', 4: 'NT', 5: 'NT'},
'account': {0: 'main1',
1: 'main2',
2: None,
3: 'main2',
4: 'main3',
5: 'sub4'}})
df_source = pd.DataFrame({'country': {0: 'GE', 1: 'AUS'},
'product': {0: 'AA', 1: 'NT'},
'account': {0: 'main1', 1: 'sub2'}})
-------- case 1 --------------
i=1
# search in df_map
person = df_map.loc[(pd.isna(df_map['account']))\
& (df_map['country'] == df_source.loc[i,'country']) \
& (df_map['product'] == df_source.loc[i,'product']), 'person']
type(person)
>pandas.core.series.Series
-------- case 2 ---------------
person = df_map.loc[1, 'person']
type(person)
>str
Подробнее здесь: https://stackoverflow.com/questions/790 ... same-field