我正在尝试使用Pyspark来置换dataframe中的一列,也就是在行间洗牌单个列的所有值。
# for some dataframe spark_df
new_df = spark_df.select(colname).sort(colname)
new_df.show() # column values sorted nicely
spark_df.withColumn("ha", new_df[colname]).show()
# column "ha" no longer sorted and has same permutation as spark_df.colname
编辑:对不起,如果我的问题不清楚,我只是想用它的排序版本替换一个列,而不做联接。感谢您指出dfs不是可变的,但即使执行spark_df.withcolumn(“ha”,spark_df.select(colname).sort(colname)[colname]).show()
也会显示列'ha'与'colname'具有相同的排列,而对列本身执行排序则显示不同的排列。问题主要是关于为什么排列在新列“ha”中保持不变,而不是关于如何替换列。再次感谢!(也改了标题以更好地反映问题)
Spark dataframes和RDDs是不可变的。每进行一次转换,就会创建一个新的转换。因此,当执行new_df=spark_df.select(colname).sort(colname)
时,spark_df
保持不变。只有new_df
进行排序。这就是为什么spark_df.withcolumn(“ha”,new_df[colname])
返回未排序的DataFrame。
请尝试new_df.withcolumn(“ha”,new_df[colname])
。
我有一堆CSV文件,它们是作为数据流读取的。对于每个dataframe,我希望更改一些列名,如果某个dataframe中存在特定列: column_name_update_map={'aa':'xx';'bb':'yy'}
这两个dataframe没有任何公共列。两个数据流中的行数和列数也不同。我尝试插入一个新的虚拟列,以增加row_index值,如下val dfr=df1.withcolumn(“row_index”,monotonically_increasing_id())所示。 但由于我使用的是Spark2,因此不支持monotonically_increasing_id方法。有没有办法把两个datafram
问题内容: 我想更改数据库表的列位置而不丢失数据。 例如: 当前表: 到 问题答案: 试试这个:
我想在不丢失数据的情况下更改数据库表的列位置。 例如: 当前表格: 到
本文向大家介绍在某些情况下如何更改R数据帧中的列?,包括了在某些情况下如何更改R数据帧中的列?的使用技巧和注意事项,需要的朋友参考一下 有时,特定列的列值与另一列有某种关系,我们可能需要根据某些条件来更改该特定列的值。我们需要进行此更改,以检查列值的更改如何对所考虑的两个列之间的关系产生影响。在R中,我们可以使用单个方括号来更改列值。 示例 请看以下数据帧- 假设我们想从第2列(x2)值中减去2,
由于LinkedList实现了队列,所以我无法使用ListIterator。我不确定如何更改队列中元素的值而不将它们放在临时位置。我该如何解决这个问题呢?