group by から最初の null 以外の値を取得するにはどうすればよいですか? 合体で最初に使用しようとしましたが、目的の動作が得られません (最初の行を取得したようです)。 F.first(F.coalesce("code"))
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql import functions as F
sc = SparkContext("local")
sqlContext = SQLContext(sc)
df = sqlContext.createDataFrame([
("a", None, None),
("a", "code1", None),
("a", "code2", "name2"),
], ["id", "code", "name"])
私は試した:
(df
.groupby("id")
.agg(F.first(F.coalesce("code")),
F.first(F.coalesce("name")))
.collect())
望ましい出力
[Row(id='a', code='code1', name='name2')]