我的数据框包含一个日期字段,它以字符串格式出现,例如
'2015-07-02T11:22:21.050Z'
我需要根据日期过滤 DataFrame 以仅获取上周的记录。 所以,我尝试了一种映射方法,我使用 strptime 将字符串日期转换为日期时间对象:
def map_to_datetime(row):
format_string = '%Y-%m-%dT%H:%M:%S.%fZ'
row.date = datetime.strptime(row.date, format_string)
df = df.map(map_to_datetime)
然后我会应用一个过滤器作为
df.filter(lambda row:
row.date >= (datetime.today() - timedelta(days=7)))
我设法使映射正常工作,但过滤器因
而失败TypeError: condition should be string or Column
有没有办法以有效的方式使用过滤,或者我应该改变方法以及如何改变?
最佳答案
我想出了一种方法来解决我的问题,方法是使用带有字符串格式日期的 SparkSQL API。
这是一个例子:
last_week = (datetime.today() - timedelta(days=7)).strftime(format='%Y-%m-%d')
new_df = df.where(df.date >= last_week)
关于python - PySpark:在日期为字符串的范围内按日期字段过滤 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115687/