假设我具有以下Spark DataFrame df
:
+-----+-------+-------+-------+
| id | col1 | col2 | col3 |
+-----+-------+-------+-------+
| "a" | 10 | 5 | 75 |
| "b" | 20 | 3 | 3 |
| "c" | 30 | 2 | 65 |
+-----+-------+-------+-------+
我想创建一个包含以下内容的新数据框new_df
:
1)每行的id
2)col1 / col2
和
3)col3 / col1
new_df
的期望输出是:
+-----+-------+-------+
| id | col1_2| col3_1|
+-----+-------+-------+
| "a" | 2 | 7.5 |
| "b" | 6.67 | 0.15 |
| "c" | 15 | 2.17 |
+-----+-------+-------+
我已经尝试过
new_df = df.select("id").withColumn("col1_2", df["col1"] / df["col2"))
没有运气
答案 0 :(得分:2)
使用select
:
df.select('id',
(df.col1 / df.col2).alias('col1_2'),
(df.col3 / df.col1).alias('col3_1')
).show()
+---+-----------------+------------------+
| id| col1_2| col3_1|
+---+-----------------+------------------+
| a| 2.0| 7.5|
| b|6.666666666666667| 0.15|
| c| 15.0|2.1666666666666665|
+---+-----------------+------------------+
或selectExpr
:
df.selectExpr('id', 'col1 / col2 as col1_2', 'col3 / col1 as col3_1').show()
+---+-----------------+------------------+
| id| col1_2| col3_1|
+---+-----------------+------------------+
| a| 2.0| 7.5|
| b|6.666666666666667| 0.15|
| c| 15.0|2.1666666666666665|
+---+-----------------+------------------+
答案 1 :(得分:-1)
Spring