【发布时间】:2021-07-04 21:50:28
【问题描述】:
下面的代码过滤出日期以获取每个月的第一天。但是由于某种原因,它不包括每年的第一个月,例如它忽略日期'2020-01-01 00:00:00' 并直接转到'2020-02-01 00:00:00'。我该如何解决这个问题?
import numpy as np
import pandas as pd
from pandas import DataFrame
date_list = ['2019-09-01 00:00:00', '2019-10-01 00:00:00', '2019-11-01 00:00:00', '2019-11-05 00:00:00',
'2019-12-01 00:00:00', '2020-01-04 00:00:00', '2020-01-12 00:00:00','2020-01-01 00:00:00', '2020-02-01 00:00:00',
'2020-03-01 00:00:00', '2020-04-01 00:00:00','2020-04-02 00:00:00', '2020-05-01 00:00:00', '2020-05-20 00:00:00',
'2020-06-01 00:00:00', '2020-07-01 00:00:00','2020-07-03 00:00:00','2020-07-07 00:00:00', '2020-08-01 00:00:00',
'2020-09-01 00:00:00','2020-10-01 00:00:00', '2020-11-01 00:00:00', '2020-11-04 00:00:00','2020-11-06 00:00:00',
'2020-08-05 00:00:00','2020-12-01 00:00:00','2021-01-01 00:00:00','2021-02-01 00:00:00', '2021-03-01 00:00:00',
'2021-04-01 00:00:00']
data = DataFrame (date_list,columns=['Data'])
datetime = pd.to_datetime(data['Data'])
monthly_changes = data.loc[np.where(datetime.dt.month.diff().gt(0))].index.tolist()
输出:
['2019-10-01 00:00:00' '2019-11-01 00:00:00' '2019-12-01 00:00:00'
'2020-02-01 00:00:00' '2020-03-01 00:00:00' '2020-04-01 00:00:00'
'2020-05-01 00:00:00' '2020-06-01 00:00:00' '2020-07-01 00:00:00'
'2020-08-01 00:00:00' '2020-09-01 00:00:00' '2020-10-01 00:00:00'
'2020-11-01 00:00:00' '2020-12-01 00:00:00' '2021-02-01 00:00:00'
'2021-03-01 00:00:00' '2021-04-01 00:00:00']
预期输出
'2019-09-01 00:00:00', '2019-10-01 00:00:00', '2019-11-01 00:00:00',
'2019-12-01 00:00:00', '2020-01-01 00:00:00', '2020-02-01 00:00:00',
'2020-03-01 00:00:00', '2020-04-01 00:00:00', '2020-05-01 00:00:00',
'2020-06-01 00:00:00', '2020-07-01 00:00:00', '2020-08-01 00:00:00',
'2020-09-01 00:00:00','2020-10-01 00:00:00', '2020-11-01 00:00:00',
'2020-12-01 00:00:00','2021-01-01 00:00:00','2021-02-01 00:00:00', '2021-03-01 00:00:00',
'2021-04-01 00:00:00'
【问题讨论】:
标签: python-3.x pandas dataframe numpy date