我试图加入两个PySpark数据框。从长远来看,如果df2中有匹配项,我想更改df1中的值。我正在研究Jupyter笔记本。
当我尝试加入并随后执行.show()时,一切都会成功。但是,一旦我想转换为Pandas数据框,就会出现值错误。
正常工作的代码:
temp = df_1.join(df_2, on='number').limit(30)
temp.show()
我已经找到了Pyspark - saveAsTable throws index error while show() dataframe works perfectly,但是除了增加限制外,我还尝试过计算,两个操作都成功了,所以我不确定这是否是由于延迟评估引起的。
引起麻烦的代码:
temp = df_1.join(df_2, on='number').limit(30)
temp.toPandas()
我希望看到的是联接表的前几行格式正确
每当我使用.toPandas()时,都会出现值错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
在这种情况下,此错误消息对我而言意义不大。
有人有什么提示吗?这可能是由于重复的列标题引起的吗?我在俯视什么吗?
编辑: 我正在尝试提供更多代码:
w2 = Window.partitionBy(df_0a["key"]).orderBy(df_0a["int_value_tf"].desc())
df_1 = df_0a.select('*',f.rank().over(w2).alias('rn'))\
.filter(f.col("rn") == 1).drop("rn")
df_2 = df_0a.join(df_0b, df_0a.number == df_0b.c_number)\
.drop(df_0b.c_number)\
.withColumn("pn", f.when(f.col("p") == "NaN", f.col("ic1")).otherwise(f.col("p")))\
.filter("NOT pn == 'NaN'")
@ cs95:我知道这仍然不是真正的复制粘贴信息。如果有帮助,我可以尝试对所有涉及的表的前几行进行假名化吗?
两个数据帧都很大,df_0b与df_0a确实具有不同的列名。
答案 0 :(得分:1)
升级上面评论中的安妮答案,以备将来使用:
即使列包含重复的名称,即使它们包含别名并使用.select()进行选择,也会发生这种情况
import "image/draw"
...
src := ...image to be converted...
b := src.Bounds()
m := image.NewNRGBA(image.Rect(0, 0, b.Dx(), b.Dy()))
draw.Draw(m, m.Bounds(), src, b.Min, draw.Src)