如何从dataframe添加值 A
添加到新列( sum
)在Dataframe中 B
包含给定Dataframe对的 A
? 最好是有自定义项?
输出应如下所示:
Dataframea:
|id|value|
|--|-----|
|1 | 10|
|2 | 0.3|
|3 | 100|
Dataframeb:(添加列) sum
)
|src|dst|sum |
|---|---|-----|
|1 |2 |10.3 |
|2 |3 |100.3|
|3 |1 |110 |
我试过了
dfB = dfB.withColumn('sum', sum(dfB.source,dfB.dst,dfA))
def sum(src,dst,dfA):
return dfA.filter(dfA.id == src).collect()[0][1][0] + dfA.filter(dfA.id == dst).collect()[0][1][0]
2条答案
按热度按时间mv1qrgav1#
如果
dfA
对于广播连接来说足够小,那么这应该可以工作:您可以删除
.coalesce()
,如果id列包含每个src和dst值。有一些方法可以实现这一点,但你最好的选择可能是使用.transform()
.gdx19jrr2#
基本上你需要加入2个Dataframe的条件
(id = src OR id = dst)
然后分组对列求和value
: