python - PySpark:在日期为字符串的范围内按日期字段过滤 DataFrame

标签 python date datetime dataframe pyspark

我的数据框包含一个日期字段,它以字符串格式出现,例如

'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/

相关文章:

c# - 比较时间而不考虑日期

python - 使用 BeautifulSoup 从 Github 页面提取文件名列表

python - 查找数组一中最接近数组二元素的元素

python - 如何解决 Python 中的递归关系

Excel TEXT 公式无法将 'yyyy' 转换为年份

Python,strptime 在毫秒部分跳过零

python - 如何使用 dataframe between_time() 函数

python - numpy 将数组附加到数组

python - 如何解析没有日期的时间字符串和没有时间的日期字符串?

java - 新的 Date() 对象给出相同的值