【发布时间】:2020-07-16 13:52:36
【问题描述】:
我有一个 pandas 数据框,想将所有日期转换为上个月的最后一个日期。例如“2020-02-04”应该变成“2020-01-31”,“2020-03-03”应该变成“2020-02-28”等等。我的 df 看起来像这样(在月份列中,我已经有了适合我想要的日期的月份):
In[76]: dfall[["date", "month"]]
Out[76]:
date month
0 2020-02-04 1
1 2020-03-03 2
2 2020-04-02 3
3 2020-05-05 4
4 2020-06-03 5
5 2020-07-02 6
现在我尝试了这个:
import calendar
import datetime
today = datetime.now()
dfall.date = str(today.year) + "-" + str(dfall.month) + "-" + str(calendar.monthrange(today.year,dfall.month)[1])
这个想法是通过将字符串添加在一起来构建新日期。但是这段代码引发了错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我知道错误来自这部分:str(calendar.monthrange(today.year,dfall.month)[1])(没有这部分代码运行没有错误,但结果不是我想要的)。这可能是因为 python 不知道从dfall.month 中获取哪个月份。有人知道我该如何处理这个问题吗?
【问题讨论】:
-
如果您考虑接受或投票以奖励帮助您的人,或者如果有问题您也可以发表评论,那会很好;)@thyhmoo
-
是的,你是对的,我对每个答案都投了赞成票,但还没有接受。我知道了:)
-
别担心!很高兴你找到了答案:) @thyhmoo