Pandas: вложенное использование .loc возвращает другой «тип» для одного и того же поля. ⇐ Python

Программы на Python
Anonymous
Pandas: вложенное использование .loc возвращает другой «тип» для одного и того же поля.

Сообщение Anonymous »

Почему при индексировании с использованием .loc я получаю два разных типа данных, хотя получаю одно значение/ячейку.
Справочная информация: я ищу значения 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

Хотя оба возвращают одно значение, оба относятся к разным типам. Чем отличается .loc в этом случае из-за его вложенного использования?

Подробнее здесь: https://stackoverflow.com/questions/790 ... same-field

Вернуться в «Python»