Dataframe 将列从数据帧(df1)添加到另一个数据帧(df2)

Dataframe 将列从数据帧(df1)添加到另一个数据帧(df2),dataframe,pyspark,Dataframe,Pyspark,我需要一些关于Apache Spark(pyspark)问题的帮助 我有一个数据帧(df1),它只有一列和一行,它包含max_时间戳 +------------------+ |最大时间戳| +-------------------+ |2019-10-24 21:18:26| +-------------------+ 我有另一个数据帧,它包含两列——EmpId和Timestamp masterData = [(1, '1999-10-24 21:18:23',), (1, '2019-10-

我需要一些关于Apache Spark(pyspark)问题的帮助

我有一个数据帧(df1),它只有一列和一行,它包含max_时间戳

+------------------+
|最大时间戳|
+-------------------+
|2019-10-24 21:18:26|
+-------------------+

我有另一个数据帧,它包含两列——EmpId和Timestamp

masterData = [(1, '1999-10-24 21:18:23',), (1, '2019-10-24 21:18:26',), (2, '2020-01-24 21:18:26',)]
df_masterdata = spark.createDataFrame(masterData, ['dsid', 'txnTime_str'])
df_masterdata = df_masterdata.withColumn('txnTime_ts', col('txnTime_str').cast(TimestampType())).drop('txnTime_str')

df_masterdata.show(5, False)

+----+-------------------+
|dsid|txnTime_ts         |
+----+-------------------+
|1   |1999-10-24 21:18:23|
|1   |2019-10-24 21:18:26|
|2   |2020-01-24 21:18:26|
+----+-------------------+

目标是根据条件txnTime\u ts 我要做的->将列“max_timestamp”添加到第二个数据帧,并通过比较这两个值来过滤记录

df_masterdata1 = df_masterdata.withColumn('maxTime', maxTS2['TEMP_MAX'])
Pyspark不允许我将maxTS2中的列添加到dataFrame-df_masterdata中

错误-

AnalysisException: 'Resolved attribute(s) TEMP_MAX#207255 missing from dsid#207263L,txnTime_ts#207267 in operator
!Project [dsid#207263L, txnTime_ts#207267, TEMP_MAX#207255 AS maxTime#207280].;;\n!Project [dsid#207263L,
txnTime_ts#207267, TEMP_MAX#207255 AS maxTime#207280]\n+- Project [dsid#207263L, txnTime_ts#207267]\n   +- Project
[dsid#207263L, txnTime_str#207264, cast(txnTime_str#207264 as timestamp) AS txnTime_ts#207267]\n      +- LogicalRDD
[dsid#207263L, txnTime_str#207264], false\n'

关于如何解决这个问题,有什么想法吗?

如果您的DF实际上只有一行/一列,那么实现这一点的最有效方法是从数据帧中提取值,然后对其进行过滤。如果您仍然需要在数据帧的上下文中执行此操作,您应该让我们加入,例如:

df_masterdata1=df_masterdata.join(df1,df_masterdata.txnTime)