我正在使用PySpark。我有两个 Dataframe ,A和B,我想得到一个新的 Dataframe ,其中第1行是A第1行,第2行是B中的第1行第3行是A中的第2行第4行是B的第2行第5行是A的第3行...该解决方案还应处理数据框长度不同时的情况。首先是交替的行,然后在数据框的末尾添加较长的列表。另外,我想测试一下斐波那契数列是否优于这种交替数列。我的意思是,行将来自不同的 Dataframe ,如ABABAABAAAB。这里的A数来自斐波那契数列。
6ie5vjzr1#
在pysark Dataframe 中没有顺序,第一行没有意义。但是我假设您有一个列“row_number”,它标识每行的索引。您可以做一个技巧,将a和b Dataframe 的行号乘以2,然后将1加到b Dataframe 的行号,合并a和b Dataframe ,最后进行新的行号。
from pyspark.sql import functions as F from pyspark.sql import Window as W a_df.show() +----------+---+ |row_number|col| +----------+---+ | 1| a| | 2| b| | 3| c| +----------+---+ b_df.show() +----------+---+ |row_number|col| +----------+---+ | 1| d| | 2| e| | 3| f| | 4| g| | 5| h| +----------+---+ ( a_df .withColumn('new_row_number', F.col('row_number')*2 - 1) .union( b_df .withColumn('new_row_number', F.col('row_number')*2)) .withColumn( 'new_row_number', F.row_number() .over(W.orderBy('new_row_number'))) ).show() +----------+---+--------------+ |row_number|col|new_row_number| +----------+---+--------------+ | 1| a| 1| | 1| d| 2| | 2| b| 3| | 2| e| 4| | 3| c| 5| | 3| f| 6| | 4| g| 7| | 5| h| 8| +----------+---+--------------+
1条答案
按热度按时间6ie5vjzr1#
在pysark Dataframe 中没有顺序,第一行没有意义。但是我假设您有一个列“row_number”,它标识每行的索引。您可以做一个技巧,将a和b Dataframe 的行号乘以2,然后将1加到b Dataframe 的行号,合并a和b Dataframe ,最后进行新的行号。