在df.toPandas()到_csv('mycsv.csv')之后,数据在重新读取时被篡改

2024-06-02 11:12:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为result_25的表。我使用此代码成功地将数据导出到磁盘上的csv

result_25.toPandas().to_csv('mycsv.csv')

为了检查是否正确保存了文件,我使用以下代码重新读取了我的表:

rr = spark.read.csv('mycsv.csv', inferSchema=True, header=True)

我检查了数据,看起来不错

rr & result_25 dataset

但是当我用.descripe().show()检查结果_25和rr时,它们的显示方式不同(我原以为它们是一样的)

result_25 and rr describe()

当我按“预测”进行分组时,它们甚至更加不同

rr

result_25

这里怎么了?有人能帮我吗?谢谢


Tags: 文件csvto数据代码truereadrr
1条回答
网友
1楼 · 发布于 2024-06-02 11:12:00

默认情况下,^{}将索引添加到CSV导出(来自文档):

index: boolean, default True
Write row names (index)

您可以在不使用索引的情况下导出到CSV:

result_25.toPandas().to_csv('mycsv.csv', index=False)

您将不会看到附加列_c0(列名称_c0是由pyspark添加的,因为pandas没有为索引列指定任何名称)

如果您只使用spark(不需要以人类可读的格式保存数据帧),另一种避免这种情况的方法是以其他格式(如JSON或parquet)写入/读取pyspark数据帧:

# JSON
result_25.write.json('mydataframe.json')
rr = spark.read.json('mydataframe.json')

# parquet
result_25.write.parquet('mydataframe.parquet')
rr = spark.read.parquet('mydataframe.parquet')

相关问题 更多 >