繁体   English   中英

Spark dataframe 读取 CSV 后具有奇怪的值

[英]Spark dataframe with strange values after reading CSV

来自这里,我试图从 Pyspark 中的这个数据集中读取正确的值。 我使用df = spark.read.csv("hashtag_donaldtrump.csv", header=True, multiLine=True)取得了很好的进展,但是现在我在某些单元格中有一些奇怪的值,正如您在这张图片中看到的那样(最后几行):

在此处输入图像描述

你知道我怎样才能摆脱它们吗? 否则,如何使用其他程序读取 CSV 格式? 我很难使用像 Vim 或 Nano 这样的文本编辑器并尝试猜测错误在哪里。 谢谢!

Spark 似乎很难阅读这一行:

2020-10-15 00:00:23,1.3165293165079306e+18,"""IS THIS WRONG??!!"" ...

因为有三个双引号。 However pandas seem to understand that well, so as a workaround, you can use pandas to read the csv file first, and convert to a Spark dataframe. 通常不建议这样做,因为涉及的开销很大,但是对于这个小的 csv 文件,性能损失应该是可以接受的。

df = spark.createDataFrame(pd.read_csv('hashtag_donaldtrump.csv').replace({float('nan'): None}))

replace用于将 pandas dataframe 中的nan替换为None Spark 认为nan是一个浮点数,当字符串类型的列中有nan时它会感到困惑。

如果文件对于 pandas 来说太大,那么您可以考虑使用mode='DROPMALFORMED'删除 Spark 无法解析的那些行:

df = spark.read.csv('hashtag_donaldtrump.csv', header=True, multiLine=True, mode='DROPMALFORMED')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM