python-尝试使用复制模块创建spark数据帧的副本时出现递归错误



我正试图使用python的copy模块创建spark数据帧的副本,但遇到了RecursionError。以下是我使用的代码

>>> df = spark.createDataFrame([[1,2],[3,4]],['x1','x2'])
>>> df.show()
+---+---+
| x1| x2|
+---+---+
|  1|  2|
|  3|  4|
+---+---+
>>> import copy
>>> df_copy = copy.copy(df)

此代码生成一个RecursionError: maximum recursion depth exceeded。当我使用copy.deepcopy时也是如此。

在python中创建spark数据帧副本的正确方法是什么?为什么当前的方法会导致递归错误?

要(浅层(复制DataFrame,只需将其分配给一个新变量:

import pyspark.sql.functions as F
import pandas as pd
# Sample data
df = pd.DataFrame({'x1': [1,2,3] })
df = spark.createDataFrame(df)
df2 = df
df2 = df2.withColumn('x1', F.col('x1') + 1)
print('df:')
df.show()
print('df2:')
df2.show() 

输出:

df:
+---+
| x1|
+---+
|  1|
|  2|
|  3|
+---+
df2:
+---+
| x1|
+---+
|  2|
|  3|
|  4|
+---+

如您所见,在将df复制到df2并更改副本后,我们原来的DataFramedf保持不变。

相关内容

最新更新