GroupBy панды DataFrame и выберите наиболее распространенное значение

У меня есть фрейм данных с тремя строковыми столбцами. Я знаю, что единственное значение в 3-м столбце действительно для каждой комбинации первых двух. Чтобы очистить данные, мне нужно сгруппировать данные по фрейму данных по первым двум столбцам и выбрать наиболее распространенное значение третьего столбца для каждой комбинации.

Мой код:

import pandas as pd
from scipy import stats

source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'], 
                  'City' : ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'],
                  'Short name' : ['NY','New','Spb','NY']})

print source.groupby(['Country','City']).agg(lambda x: stats.mode(x['Short name'])[0])

Последняя строка кода нет работает, говоритОшибка ключа 'Короткое имя'" и если я пытаюсь сгруппировать только по городам, я получаю ошибку AssertionError. Что я могу сделать это исправить?

Ответы на вопрос(8)

Ваш ответ на вопрос