我正在使用python,目前有几个类pyspark.sql.column.Column
的实例,并希望连接它们,以便我得到一个带有上述列的pyspark.sql.dataframe.DataFrame
对象。让我用以下玩具示例来说明这一点。
玩具示例
1)让我们首先创建一个示例pyspark DataFrame,以便能够获得两个示例列。
from pyspark.sql import SQLContext
# Create a DataFrame
df = sqlContext.createDataFrame([("Jordi", 14, 45), ("Elisabeth", 22, 63), ("Aina", 8, 35)], ("name", "age", "weight"))
# Get two columns
col1 = df.name
col2 = df.age
2)现在我的目标是能够将变量col1
和col2
组合到一个DataFrame中,这样这个新的DataFrame包含两列:
| name | age |
|-----------+--------|
| Jordi | 14 |
| Elisabeth | 22 |
| Aina | 8 |
我不确定从用于表达式的spark列创建数据帧。您可以使用select语句:
df.select('name', 'age')
如果您有2个数据框,并且无法通过公共列加入它们:
from pyspark.sql import Row
df_temp1 = df1 \
.select(col1) \
.rdd \
.zipWithIndex() # (row, id) \
.map(lambda row: Row(id=row[1], **row[0].asDict())) \
.toDf()
df_temp2 = df2 \
.select(col2) \
.rdd \
.zipWithIndex() # (row, id) \
.map(lambda row: Row(id=row[1], **row[0].asDict())) \
.toDf()
df = df2_temp.join(df1_temp, 'id')