熊猫期(月)至当月的最后一天,格式为YYYY-MM-DD

时间:2019-06-04 14:23:40

标签: pandas

我有一个YYYY-MM格式的熊猫时期对象。我正试图从中获得每月的最后一天。

df['Date']=(df.MONTH).end_time

我得到了错误:

  

“系列”对象没有属性“结束时间”

我该如何解决?

2 个答案:

答案 0 :(得分:2)

尝试使用MonthEnd

s=pd.Series('2019-01')

pd.to_datetime(s,format='%Y-%m')+pd.tseries.offsets.MonthEnd()
Out[113]: 
0   2019-01-31
dtype: datetime64[ns]

答案 1 :(得分:2)

您可能需要normalize

首先要意识到的是,对于pandas.Series,您可以通过.dt accessor访问datetime和timedelta函数。这就是让您进入end_time的原因。但是,这样可以为您提供最后一个日期以及最后一个可能的时间部分。这可能超出您的议价范围。如果您真的只想要日期。您可以使用normalzie

  

将时间转换为午夜。

     

日期时间的时间部分将转换为午夜,即00:00:00。这在时间无关紧要的情况下很有用。长度不变。时区不受影响。

     

此方法在具有.dt访问器下的datetime值的Series上,以及直接在Datetime Array / Index上可用。

设置

df = pd.DataFrame(dict(MONTH=[pd.Period('2019-01')]))

使用normalize

df.MONTH.dt.end_time.dt.normalize()

0   2019-01-31
Name: MONTH, dtype: datetime64[ns]

没有normalize

0   2019-01-31 23:59:59.999999999
Name: MONTH, dtype: datetime64[ns]