Подсчитайте вхождения значения столбца, затем введите это количество в столбец для каждой строки, соответствующей агрегированному значению столбца:

#python #pandas #dictionary

#питон #панды #словарь

Вопрос:

Я пытаюсь ввести агрегированное вхождение значений столбцов в отдельный столбец в том же Dataframe самом . Я попытался подсчитать столбец дат и ввести эти события в dict значение, а дату в качестве dict ключа. Затем, когда я пытаюсь (логическое) сопоставить df["count"] = df[df[column]==my_dict.keys] , логика меня подводит. Мне не хватает той части, где, если верно, введите my_dict.values().

То Dataframe :

 Date Place_code  14 2020-04-20 282 16 2020-04-23 301 18 2020-04-22 291 20 2020-04-22 422 21 2020-04-22 422  

Желаемый Dataframe результат:

 Date Occurrence Place_code  14 2020-04-20 1 282 16 2020-04-23 1 301 18 2020-04-22 3 291 20 2020-04-22 3 422 21 2020-04-22 3 422  

Также простите за название, английский не мой родной язык.

Ответ №1:

Вы могли бы попробовать этот лайнер:

 df['Occurrence'] = df['Date'].replace(df.groupby('Date').apply(lambda x: len(x))  

Комментарии:

1. Получение «неожиданного EOF при разборе».

2. У меня были некоторые проблемы с ответом выше, но вывод из него сработал: df['counts'] = df.DATE.map(df.DATE.value_counts())

Ответ №2:

Один из вариантов-использовать transform для возврата той же длины, что и исходный кадр данных:

 df.assign(Occurence = df.groupby('Date').transform('count')) # df.assign(Occurence = df.groupby('Date').transform(len))   Date Place_code Occurence 14 2020-04-20 282 1 16 2020-04-23 301 1 18 2020-04-22 291 3 20 2020-04-22 422 3 21 2020-04-22 422 3