Pyspark dataframe:基于其他列值创建列

Pyspark dataframe:基于其他列值创建列,dataframe,apache-spark,pyspark,apache-spark-sql,format-string,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,Format String,我有一个pyspark数据帧: 现在,我想添加一个名为“countryAndState”的新列,例如,第一行的值是“USA\u CA”。我尝试过几种方法,最后一种是: df_2 = df.withColumn("countryAndState", '{}_{}'.format(df.country, df.state)) 我试过用“country”和“state”,或者简单地用country和state,也试过用col(),但似乎没有任何效果。有人能帮我解决这个问题吗?您

我有一个pyspark数据帧:

现在,我想添加一个名为“countryAndState”的新列,例如,第一行的值是“USA\u CA”。我尝试过几种方法,最后一种是:

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

我试过用
“country”
“state”
,或者简单地用
country
state
,也试过用
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')))