pd.Series.map
не требуется.Вы можете использовать GroupBy
здесь и вывести словарь:
df = pd.DataFrame([['M', 0], ['M', 1], ['M', 1], ['F', 0], ['F', 0], ['F', 1]],
columns=['Gender', 'Showed'])
d = df.groupby(['Gender', 'Showed']).size().to_dict()
# {('F', 0): 2, ('F', 1): 1, ('M', 0): 1, ('M', 1): 2}
В общем, вам следует избегать создания переменного числа переменных.Словарь позволяет эффективно извлекать значения, например, с помощью d[('F', 0)]
для женского пола и показывает 0.
Но если вы действительно должны использовать map
, вы можете использоватьpd.Index.map
версия:
d = df.groupby(['Gender', 'Showed']).size()
res = df.drop_duplicates()
res['Counts'] = res.set_index(['Gender', 'Showed']).index.map(d.get)
print(res)
Gender Showed Counts
0 M 0 1
1 M 1 2
3 F 0 2
5 F 1 1