用月份的最后一天替换日期
Replacing day in date with last day of month
我有一个包含列 'date' 的数据框,其中包含 yyyy-mm-dd 00:00:00。
Python 自动分配每个季度的第一天,但我想要同月的最后一天。
我试过:
cr_ind_ml_new = cr_ind_ml.replace(to_replace= '07-01', value='07-31', regex=True)
和
cr_ind_ml.replace('07-01', '07-31', inplace= True)
没有任何成功。
df 样本:
date
value
1990-07-01 00:00:00
46.7
1990-10-01 00:00:00
54.2
1991-01-01 00:00:00
38.6
1991-04-01 00:00:00
20
1991-07-01 00:00:00
18.6
我要:
date
value
1990-07-31 00:00:00
46.7
1990-10-30 00:00:00
54.2
1991-01-31 00:00:00
38.6
1991-04-30 00:00:00
20
1991-07-31 00:00:00
18.6
有没有人有想法?
如果你的df
date value
0 1990-07-01 00:00:00 46.7
1 1990-10-01 00:00:00 54.2
2 1991-01-01 00:00:00 38.6
3 1991-04-01 00:00:00 20.0
4 1991-07-01 00:00:00 18.6
有一列date
有字符串,那你可以用pd.to_datetime()
and the MonthEnd()
偏移量做
df['date'] = pd.to_datetime(df['date']) + pd.offsets.MonthEnd()
这给了你
date value
0 1990-07-31 46.7
1 1990-10-31 54.2
2 1991-01-31 38.6
3 1991-04-30 20.0
4 1991-07-31 18.6
但是:date
的元素现在属于 datetime
类型。如果 date
中的项目已经键入 datetime
,那么您不需要 pd.to_datetime()
部分 - 只需添加偏移量就足够了。
如果你想要预期的输出为字符串,那么这个(从原来的开始)
df['date'] = (
pd.to_datetime(df['date']) + pd.offsets.MonthEnd()
).dt.strftime('%Y-%m-%d %H:%M:%S')
给你
date value
0 1990-07-31 00:00:00 46.7
1 1990-10-31 00:00:00 54.2
2 1991-01-31 00:00:00 38.6
3 1991-04-30 00:00:00 20.0
4 1991-07-31 00:00:00 18.6
我有一个包含列 'date' 的数据框,其中包含 yyyy-mm-dd 00:00:00。 Python 自动分配每个季度的第一天,但我想要同月的最后一天。
我试过:
cr_ind_ml_new = cr_ind_ml.replace(to_replace= '07-01', value='07-31', regex=True)
和
cr_ind_ml.replace('07-01', '07-31', inplace= True)
没有任何成功。
df 样本:
date | value |
---|---|
1990-07-01 00:00:00 | 46.7 |
1990-10-01 00:00:00 | 54.2 |
1991-01-01 00:00:00 | 38.6 |
1991-04-01 00:00:00 | 20 |
1991-07-01 00:00:00 | 18.6 |
我要:
date | value |
---|---|
1990-07-31 00:00:00 | 46.7 |
1990-10-30 00:00:00 | 54.2 |
1991-01-31 00:00:00 | 38.6 |
1991-04-30 00:00:00 | 20 |
1991-07-31 00:00:00 | 18.6 |
有没有人有想法?
如果你的df
date value
0 1990-07-01 00:00:00 46.7
1 1990-10-01 00:00:00 54.2
2 1991-01-01 00:00:00 38.6
3 1991-04-01 00:00:00 20.0
4 1991-07-01 00:00:00 18.6
有一列date
有字符串,那你可以用pd.to_datetime()
and the MonthEnd()
偏移量做
df['date'] = pd.to_datetime(df['date']) + pd.offsets.MonthEnd()
这给了你
date value
0 1990-07-31 46.7
1 1990-10-31 54.2
2 1991-01-31 38.6
3 1991-04-30 20.0
4 1991-07-31 18.6
但是:date
的元素现在属于 datetime
类型。如果 date
中的项目已经键入 datetime
,那么您不需要 pd.to_datetime()
部分 - 只需添加偏移量就足够了。
如果你想要预期的输出为字符串,那么这个(从原来的开始)
df['date'] = (
pd.to_datetime(df['date']) + pd.offsets.MonthEnd()
).dt.strftime('%Y-%m-%d %H:%M:%S')
给你
date value
0 1990-07-31 00:00:00 46.7
1 1990-10-31 00:00:00 54.2
2 1991-01-31 00:00:00 38.6
3 1991-04-30 00:00:00 20.0
4 1991-07-31 00:00:00 18.6