我想在序言中说我对Spark很新 . 我有一个关于Pandas的工作程序,我需要在Spark上运行 . 我正在使用Databricks来做到这一点 . 初始化'sqlContext'和'sc'后,我加载一个CSV文件并创建一个Spark数据帧 . 在这之后,我将这个数据帧转换为Pandas数据帧,在那里我已经编写了代码来完成我需要做的事情 .
目标:我需要加载CSV文件并识别数据类型并返回每列的数据类型 . 棘手的部分是日期有多种格式,我已经编写了(在这个社区的帮助下)正则表达式来匹配 . 我为每种数据类型执行此操作 . 最后,我将列转换为正确的类型并打印每个列类型 .
在成功加载我的Pandas数据帧后,我收到此错误:“TypeError:to_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'是列 Headers ,'col'是我用来迭代列 Headers 的变量 . 在PyCharm上运行时,此代码运行良好 . 不知道为什么我在Spark上遇到这个错误 .
任何帮助都会很棒!
1 回答
从你的评论:
所以,我的答案与Spark无关,只是将数据上传到Databricks Cloud(社区版),这似乎是你真正的问题 .
初始化集群并上传文件
user_info.csv
后,我们将获得此屏幕截图:包括我们上传文件的实际路径 .
现在,在Databricks笔记本中,如果您尝试将此精确路径与pandas一起使用,则会出现
File does not exist
错误:因为,正如instructions明确提到的那样,在这种情况下(即你想直接加载到pandas或R而不是Spark中的文件),你需要在
/dbfs
之前添加文件路径: