我有一个格式的数据框
Date Datediff Cumulative_sum
01 January 2019 1 5
02 January 2019 1 7
02 January 2019 2 15
01 January 2019 2 8
01 January 2019 3 13
Run Code Online (Sandbox Code Playgroud)
我想从数据框中旋转列 Datediff 使最终结果看起来像
Index Day-1 Day-2 Day-3
01 January 2019 5 8 13
02 January 2019 7 15
Run Code Online (Sandbox Code Playgroud)
我已经使用了 pivot 命令 shuch
pt = pd.pivot_table(df, index = "Date",
columns = "Datediff",
values = "Cumulative_sum") \
.reset_index() \
.set_index("Date"))
Run Code Online (Sandbox Code Playgroud)
返回数据透视表
1 2 3
01 January 2019 5 8 13
02 January 2019 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Python 在 Spark 中创建一个“功能”列,以便机器学习库使用。但是,我在生成“特征”列的 VectorAssembler 中遇到了包括数值和分类变量在内的问题。
cat_cols = ["cat_1", "cat_2", "cat_3"]
num_cols = ["num_1", "num_2", "num_3", "num_4"]
indexers = [StringIndexer(inputCol = c, outputCol="{0}_indexed".format(c)) for c in cat_cols]
encoders = [StringIndexer(inputCol = indexer.getOutputCol(), outputCol = "{0}_encoded".format(indexer.getOutputCol()))
for indexer in indexers]
assembler = VectorAssembler(inputCols = [encoder.getOutputCol() for encoder in encoders], outputCol = "features")
pipeline = Pipeline(stages = indexers + encoders + [assembler])
df = pipeline.fit(df).transform(df)
Run Code Online (Sandbox Code Playgroud)
到目前为止构建的管道可以创建一个仅包含分类变量的“特征”列,但我不知道如何扩展它以使“特征”列同时包含分类变量和数值变量。
请注意,我使用的是 Spark 2.3 和 Python 3。
我的目标是为从 SQL 查询返回的所有行和列添加前缀(同一列的所有行都应采用相同的前缀)。我目前的做法是
echo "$(<my_sql_query> | awk '$0="prefixA_"$0' |
awk '$2="prefixB_"$2' |
awk '$3="prefixC_"$3' |
awk '$4="prefixD_"$4')"
Run Code Online (Sandbox Code Playgroud)
上面的脚本正是我想要的,但我想知道是否有更快的方法。