У меня есть CSV-файл в качестве входных данных, в котором один из столбцов имеет формат даты как год-месяц. Мне нужно изменить формат столбца на формат год-месяц-дата, что подразумевает дату окончания месяца. Я использую Python 3. Кроме того, я также использую измененный столбец в функции агрегирования и группирую по функциям.
Например: 2020-01
2020-02
2020 -03
2020-04
Ожидаемый результат:
2020-01-31
2020-02-29 (с учетом високосного года)
2020-03-31
2020-04-30
так далее ...
from calendar import monthrange from datetime import date def month_end(year, month): return date(year=year, month=month, day=monthrange(year, month)[1]).isoformat()
>>> month_end(2020, 2) '2020-02-29'
import pandas as pd import datetime as dt import calendar as cal # making data frame from csv file df = pd.read_csv("Table.csv") # (month_year)->Column Name df['month_last_dates'] = [datetime.datetime(date.year, date.month, calendar.monthrange(date.year, date.month)[1]) for date in month_year] # defining aggregation process for each column aggregations={ 'Metric':sum } # Group by and aggregate print( df.groupby(['col1', 'month_last_dates','col2']).agg(aggregations) )