#python #pandas #numpy #data-science #data-analysis
#python #pandas #numpy #наука о данных #анализ данных
Вопрос:
У меня есть данные с четырьмя столбцами, которые включают в себя: Id
, CreationDate
, Score
и ViewCount
.
CreationDate
Имеет следующий формат, например: 2011-11-30 19:41:14.960. Мне нужно сгруппировать по годам CreationDate
, посчитать их, суммируя Score
и ViewCount
также, и добавить в дополнительные столбцы.
Я хочу использовать с библиотекой pandas.
Спасибо!
Перед изменением — примерный пример:
Id CreationDate Score ViewCount
0 1 2011-11-30 19:15:54.070 25 1526
1 2 2011-11-30 19:41:14.960 20 601
2 3 2012-11-30 19:42:45.470 36 1015
3 4 2018-11-30 19:44:55.593 8 1941
4 5 2011-11-30 19:53:23.387 11 5053
5 6 2018-11-30 20:04:43.757 25 5123
6 7 2011-11-30 20:08:23.267 53 8945
После изменения — представить данные следующим образом:
Id CreationDate Score ViewCount
0 1 2011 109 16125
2 3 2012 36 1015
3 4 2018 33 7064
Ответ №1:
Вы можете преобразовать столбец в years by Series.dt.year
и агрегировать по GroupBy.agg
с помощью словаря для столбцов с функцией агрегирования, в последнюю очередь добавить, DataFrame.reindex
при необходимости, тот же порядок столбцов, что и в оригинале DataFrame
:
#if necessary convert to datetimes
df['CreationDate'] = pd.to_datetime(df['CreationDate'])
df1 = (df.groupby(df['CreationDate'].dt.year)
.agg({'Id':'first', 'Score':'sum', 'ViewCount':'sum'})
.reset_index()
.reindex(columns=df.columns)
)
print (df1)
Id CreationDate Score ViewCount
0 1 2011 109 16125
1 3 2012 36 1015
2 4 2018 33 7064