【发布时间】:2022-01-07 06:29:52
【问题描述】:
我有 2 个数据框
df1=
+--------------+
|questions |
+--------------+
|[Q1, Q2] |
|[Q4, Q6, Q7] |
|... |
+---+----------+
df2 =
+--------------------+---+---+---+---+
| Q1| Q2| Q3| Q4| Q6| Q7 | ... |Q25|
+--------------------+---+---+---+---+
| 1| 0| 1| 0| 0| 1 | ... | 1|
+--------------------+---+---+---+---+
我想在第一个数据框中添加一个新列,其中所有列的值都定义为df1.questions。
预期结果
df1 =
+--------------++--------------+
|questions |values
+--------------+---------------+
|[Q1, Q2] |[1, 0] |
|[Q4, Q6, Q7] |[0, 0, 1] |
|... | |
+---+----------++--------------+
当我这样做时
cols_to_link = ['Q1', 'Q2']
df2= df2.select([col for col in cols_to_link])\
df2 = df2.withColumn('value', F.concat_ws(", ", *df2.columns))
附加列是我想要的,但我不能通过混合数据框来做到这一点
当我使用 df2 时它也有效
df2 = df2.select([col for col in df1.select('questions').collect()[0][0]])\
df2 = df2.withColumn('value', F.concat_ws(", ", *df2.columns))
但不是当我想从 df1 出发时
df1= df1\
.withColumn('value', F.concat_ws(", ", *df2.select([col for col in df1.select('questions').collect()])))
我哪里错了?
【问题讨论】:
标签: python pyspark concatenation