
[英]How to remove the extra rows from a dataframe after doing join operations in Pyspark?
[英]Not able to perform operations on resulting dataframe after "join" operation in PySpark
df=spark.read.csv('data.csv',header=True,inferSchema=True)
rule_df=spark.read.csv('job_rules.csv',header=True)
query_df=spark.read.csv('rules.csv',header=True)
join_df=rule_df.join(query_df,rule_df.Rule==query_df.Rule,"inner").drop(rule_df.Rule).show()
print(join_df.collect().columns)
在这里,我创建了三个数据框:df、rule_df 和 query_df。 我已经对 rule_df 和 query_df 执行了内部连接,并将结果数据帧存储在 join_df 中。 但是,当我尝试简单地打印 join_df 数据框的列时,出现以下错误-
AttributeError: 'NoneType' object has no attribute 'columns'
结果数据帧的行为不一样,我无法对其执行任何数据帧操作。
我猜当您尝试调用一个不存在的对象时会发生此错误,但这里不应该是这种情况,因为我可以查看生成的 join_df。
我是否需要执行不同的联接以避免此错误? 可能是一个愚蠢的错误,但我很难弄清楚它是什么。 请帮忙!
你犯了几个错误。
首先,您尝试将.show()
的返回值分配给返回None
的join_df
。
然后调用.collect()
函数,该函数返回一个包含此 RDD 中所有元素的列表。 您需要直接在DataFrame
.columns
这应该有效:
join_df = rule_df.join(query_df,rule_df.Rule==query_df.Rule,"inner").drop(rule_df.Rule)
print(join_df.columns)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.