【问题标题】:pyspark - 'DataFrame' object has no attribute 'map'pyspark - 'DataFrame' 对象没有属性 'map'
【发布时间】:2021-04-07 16:33:42
【问题描述】:

我有以下数据集摘要,在 databricks 上使用 pyspark

OrderMonthYear SaleAmount
2012-11-01T00:00:00.000+0000 473760.5700000001
2010-04-01T00:00:00.000+0000 490967.0900000001

此地图函数将 OrderMonthYear 转换为整数类型时遇到数据帧错误

results = summary.map(lambda r: (int(r.OrderMonthYear.replace('-','')), r.SaleAmount)).toDF(["OrderMonthYear","SaleAmount"])

有什么想法吗?

AttributeError: 'DataFrame' object has no attribute 'map'

【问题讨论】:

  • 您无法将其转换为整数,因为有些字符串您没有替换 (T, +, :)
  • 嘿,谢谢回复,该列是时间戳..不是字符串 DataFrame[OrderMonthYear: timestamp]
  • 那你为什么打电话给replace?这是一个字符串方法。
  • 知道了。即使我尝试使用 datetime 函数也不起作用。 ..... test = summary.select("OrderMonthYear").apply(lambda x: x.strftime('%d%m%Y')) ..... 'DataFrame' 对象没有属性 'apply' ....我猜我的 sql 调用混淆了数据框结构? ...数据 = sqlContext.read.format("csv")
  • 你想要的输出是什么?

标签: python apache-spark pyspark


【解决方案1】:

在这里找到解决方案Pyspark date yyyy-mmm-dd conversion

from datetime import datetime
from pyspark.sql.functions import col, unix_timestamp, from_unixtime, date_format
from pyspark.sql.types import DateType

df = summary.withColumn('date', from_unixtime(unix_timestamp("OrderMonthYear", 'yyyy-MMM')))


df2 = df.withColumn("new_date_str", date_format(col("date"), "yyyyMMdd"))
display(df2)

感谢@mck 的帮助! 干杯

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 2019-12-13
    • 1970-01-01
    • 2017-01-24
    • 2019-01-15
    • 2016-11-30
    • 2019-07-03
    • 2018-04-15
    相关资源
    最近更新 更多