Pyspark 数据框:根据其他列值创建列

Pyspark dataframe: creating column based on other column values

我有一个 pyspark 数据框:

现在,我想添加一个名为“countryAndState”的新列,例如,其中第一行的值为“USA_CA”。我尝试了几种方法,最后一种是:

df_2 = df.withColumn("countryAndState", '{}_{}'.format(df.country, df.state))

我尝试过使用 "country""state",或者只是使用 countrystate,也尝试过使用 col(),但似乎没有任何效果.谁能帮我解决这个问题?

您不能在 Spark 中使用 Python 格式字符串。使用 concat 代替:

import pyspark.sql.functions as F

df_2 = df.withColumn("countryAndState", F.concat(F.col('country'), F.lit('_'), F.col('state')))

concat_ws,如果您需要使用给定的分隔符将许多列链接在一​​起:

import pyspark.sql.functions as F

df_2 = df.withColumn("countryAndState", F.concat_ws('_', F.col('country'), F.col('state')))