Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Spark上的Pandas命令出错?_Python_Pandas_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Python Spark上的Pandas命令出错?

Python Spark上的Pandas命令出错?,python,pandas,apache-spark,pyspark,apache-spark-sql,Python,Pandas,Apache Spark,Pyspark,Apache Spark Sql,我想在开场白中说,我对Spark非常陌生。我有一个关于熊猫的工作程序,我需要在Spark上运行。我正在使用Databricks来做这件事。在初始化“sqlContext”和“sc”之后,我加载一个CSV文件并创建一个Spark数据帧。完成此操作后,我将此数据帧转换为Pandas数据帧,在这里我已经编写了代码来执行我需要执行的操作 目标:我需要加载一个CSV文件,识别数据类型并返回每个列的数据类型。棘手的是日期有多种格式,我在这个社区的帮助下编写了正则表达式来匹配这些格式。我对每种数据类型都这样做

我想在开场白中说,我对Spark非常陌生。我有一个关于熊猫的工作程序,我需要在Spark上运行。我正在使用Databricks来做这件事。在初始化“sqlContext”和“sc”之后,我加载一个CSV文件并创建一个Spark数据帧。完成此操作后,我将此数据帧转换为Pandas数据帧,在这里我已经编写了代码来执行我需要执行的操作

目标:我需要加载一个CSV文件,识别数据类型并返回每个列的数据类型。棘手的是日期有多种格式,我在这个社区的帮助下编写了正则表达式来匹配这些格式。我对每种数据类型都这样做。最后,我将列转换为正确的类型,并打印每个列类型

成功加载Pandas数据帧后,出现以下错误:TypeError:to\u numeric遇到意外的关键字参数“downcast”

触发此操作的我正在运行的代码:

 # Changing the column data types
if len(int_count) == len(str_count):
    df[lst[col]] = pd.to_numeric(df[lst[col]], errors='coerce', downcast='integer')
if len(float_count) == len(str_count):
    df[lst[col]] = pd.to_numeric(df[lst[col]], errors='coerce', downcast='float')
if len(boolean_count) == len(str_count):
    df[lst[col]] = df[lst[col]].astype('bool')
if len(date_count) == len(str_count):
    df[lst[col]] = pd.to_datetime(df[lst[col]], errors='coerce')
“lst”是列标题,“col”是我用来遍历列标题的变量。这段代码在PyCharm上运行时工作得非常好。不知道为什么我会在Spark上出现这个错误

任何帮助都会很好

根据您的评论:

我曾尝试将初始数据直接加载到pandas df中,但它始终向我抛出一个错误,说该文件不存在,这就是为什么我在将其加载到Spark后必须将其转换的原因

所以,我的答案与Spark无关,只是将数据上传到Databricks Cloud Community Edition,这似乎是您真正的问题

初始化集群并上载文件user_info.csv后,我们得到以下屏幕截图:

包括上传文件的实际路径

现在,在Databricks笔记本中,如果您尝试使用熊猫的精确路径,您将得到一个文件不存在错误:

因为,正如前面明确提到的,在这种情况下,即您希望直接在pandas或R中加载而不是Spark中加载的文件,您需要在文件路径前面加上/dbfs:


什么是df,熊猫数据帧还是Spark数据帧?错误发生在哪个确切的命令中?分享更多的代码细节不会有什么坏处…@desertnaut df是我的熊猫数据帧。这是我第一次使用downcast命令,这是一个错误。我不想在这里发布我的全部代码,但我很乐意发布更多信息。因此,这听起来像是一个与熊猫相关的问题——除了转换初始数据帧,我看不出Spark与它有什么关系。我建议尝试将初始数据直接加载到pandas df中-如果您仍然面临此问题,它确实与Spark无关。在任何情况下,“Spark上的pandas命令”都不能准确描述您的问题。谢谢您回复!虽然我可以直接将其作为熊猫数据帧上传,但仍然会遇到与我最初提到的相同的错误。我真的不知道该联系什么社区,因为我有点不明白为什么它不起作用。这是我的全部代码,如果这有帮助的话:@rmahesh所以,至少现在你知道这不是因为火花,所以可以说我的答案不是没有它的优点,你甚至可以投票。检查版本不兼容性Databricks CE运行Python 2.7.12和pandas 0.18.1,如果错误仍然存在,请向Databricks提出问题您的答案肯定有价值,我只想提供所有信息。我将向Databricks报告此错误,再次感谢您。@rmahesh您解决过此问题吗?我遇到了同样的问题issue@Kate我不这么认为不。
 import pandas as pd
 pandas_df = pd.read_csv("/FileStore/tables/1zpotrjo1499779563504/user_info.csv")
 [...]
 IOError: File /FileStore/tables/1zpotrjo1499779563504/user_info.csv does not exist
 pandas_df = pd.read_csv("/dbfs/FileStore/tables/1zpotrjo1499779563504/user_info.csv") # works OK
 pandas_df.head() # works OK