【发布时间】:2019-04-04 19:29:20
【问题描述】:
我有下一个约会:
0 2019-06-29
Name: end date, dtype: datetime64[ns]
这是名为 data 的数据框的一部分:
data
PointAlias start Date end date
0 AO122732 2018-06-29 2019-06-29
然后我用下一个代码对其进行转换:
end_date_transformed = []
for x in range(len(data['end date'])):
transf = pd.to_datetime(data['end date'][x]).date()
end_date_transformed.append(transf)
end_date_transformed
output: [datetime.date(2019, 6, 29)]
我想知道是否可以将其从列表转换为字符串以应用datetime.datetime.strftime(end_date_transformed, %Y%m%d')。
有没有办法做到这一点?
这样做的最终目标是能够过滤日期数据框以获取那些日期为<= end_date_transformed 的日期。比如:
df
date
0 2018-06-29
1 2018-10-29
2 2019-02-28
3 2019-06-29
4 2019-10-29
5 2020-02-29
df[df['date'] <= end_date_transformed] # This does not work, the output is:
ValueError: Arrays were different lengths: 44 vs 1
我知道上面的代码不起作用,但是如果我执行 datetime.date(year,month,day) 并像end_date_transformed 一样使用它,它可以工作,所以问题在于结束日期的转换。
如果有人可以提供帮助,我将不胜感激。
非常感谢您花时间阅读并回答。
【问题讨论】:
-
你为什么首先将其存储为列表?
-
使其对 python 可读。但我不知道这是否是正确的方法,因为我是新的@rahlf23
-
换句话说,你只会有一个结束日期吗?还是您打算有多个结束日期?
-
@rahlf23 不止一次约会。
-
好的,那么其他的结束日期在哪里?你能发布你的原始数据框吗?您的问题令人困惑,因为您似乎有多个数据框浮动。
标签: python pandas datetime dataframe filter