【问题标题】:Remove columns that match删除匹配的列
【发布时间】:2022-11-01 11:00:51
【问题描述】:

有 2 个 pyspark 数据框

id myTimeStamp
1 2022-06-01 05:00
1 2022-06-06 05:00
2 2022-06-01 05:00
2 2022-06-02 05:00
2 2022-06-03 05:00
2 2022-06-04 08:00
3 2022-06-02 05:00
3 2022-06-04 10:00
myTimeToRemove
2022-06-01 05:00
2022-06-04 05:00

需要按日期从包含第二个数据帧上的值的第一个数据帧中删除记录(与时间无关)

预期的数据框:

id myTimeStamp
1 2022-06-06 05:00
2 2022-06-02 05:00
2 2022-06-03 05:00
3 2022-06-02 05:00

我试过了

fdcn_df = fdcn_df.join(holidays_df, fdcn_df['myTimeStamp'].cast('date') != holidays_df['myTimeToRemove'].cast('date'),"inner")

但没有结果

我期待

预期的数据框:

id myTimeStamp
1 2022-06-06 05:00
2 2022-06-02 05:00
2 2022-06-03 05:00
3 2022-06-02 05:00

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    myTimeStampmyTimeToRemove 的数据类型是什么?假设它是一个timestamp 列,您可以使用leftanti 加入:

    fdcn_df.alias('a').join(
        holidays_df.alias('b'),
        on=func.to_date(func.col('a.myTimeStamp'))==func.to_date(func.col('b. myTimeToRemove')),
        how='leftanti'
    ).show(100, False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-20
      • 2018-08-03
      • 1970-01-01
      • 2023-03-10
      • 2013-03-08
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      相关资源
      最近更新 更多