Pandas将字符串转换为月末日期

时间:2017-12-12 23:16:03

标签: python pandas date

我有这个问题,我的df中的一列是以字符串形式输入的,但我想将它转换为python中的日期月末。例如,

   Id Name    Date  Number
0   1    A  201601       5
1   2    B  201602       6
2   3    C  201603       4

“日期”列将年份和月份作为字符串。理想情况下,我的目标是:

   Id Name        Date  Number
0   1    A  01/31/2016       5
1   2    B  02/29/2016       6
2   3    C  03/31/2016       4

我能够使用Endmonth和剪切字符串在excel上执行此操作,但是当我在python中尝试pd.to_datetime时,它没有工作。谢谢!

2 个答案:

答案 0 :(得分:5)

我们可以使用MonthEnd

from pandas.tseries.offsets import MonthEnd
df.Date=(pd.to_datetime(df.Date,format='%Y%m')+MonthEnd(1)).dt.strftime('%m/%d/%Y')
df
Out[1336]: 
   Id Name        Date  Number
0   1    A  01/31/2016       5
1   2    B  02/29/2016       6
2   3    C  03/31/2016       4

答案 1 :(得分:2)

您可以使用PeriodIndex

In [36]: df['Date'] = pd.PeriodIndex(df['Date'].astype(str), freq='M').strftime('%m/%d/%Y')

In [37]: df
Out[37]:
   Id Name        Date  Number
0   1    A  01/31/2016       5
1   2    B  02/29/2016       6
2   3    C  03/31/2016       4