附加 DataFrame 时出现“数据类型不理解”
Posted
技术标签:
【中文标题】附加 DataFrame 时出现“数据类型不理解”【英文标题】:"data type not understood" when appending DataFrames 【发布时间】:2018-03-28 15:42:46 【问题描述】:所以我从一个空白 DataFrame 开始,根据表名列表从 SQL 语句中提取一堆新的 dataFrame,然后将每个附加到起始 dataFrame。 例如:
df1 = pd.DataFrame()
for name in tableslist:
perT = pd.read_sql_query("SELECT FROM myschema.0 WHERE username = '1'.format(name,user),engine)
df1 = df1.append(perT)
在终端中返回错误:data type not understood
。我很肯定它是由附加行引起的(我已经检查了打印语句)。是什么原因造成的? perT 可能是一个没有行的表。这是一个问题吗?我已经尝试打印出每个表的头部,但仍然无法确定导致该错误/失败的原因。
【问题讨论】:
您确定您的查询符合您的预期吗?尝试单独运行它们。 尝试单独运行mysql
查询,收集查询输出一个文本/csv文件,然后添加到df
。这可能有助于查明问题。
【参考方案1】:
我发现对于旧版本的 pandas,当数据框中存在日期字段(特别是 datetime64
变体)时,可能会发生这种情况。在过去,我使用了许多解决方法(见下文),如果不查看数据,很难确切知道什么可以帮助您。
-
将所有日期字段转换为 pandas 时间戳 (
df[col_name].apply(pd.Timestamp)
)。
将所有日期字段转换为字符串 (df[col_name].astype(str)
)。
您的初始数据框是一个空数据框。不要尝试将非空数据帧附加到空数据帧,而是将初始数据帧设置为等于第一个非空数据帧,然后继续附加。
if df1.empty:
df1 = perT
else:
df1 = df1.append(perT)
升级熊猫 :)
【讨论】:
我执行了第 3 步和第 4 步。我相信错误来自尝试附加空数据帧(要么是完整的要么是完整的附加到空的)!非常感谢以上是关于附加 DataFrame 时出现“数据类型不理解”的主要内容,如果未能解决你的问题,请参考以下文章
将多个 DataFrame 附加到多个现有的 Excel 工作表
将小 PySpark DataFrame 写入镶木地板时出现内存错误
尝试在 Pandas Dataframe 上运行函数时出现 TypeError
将 RDD 转换为 DataFrame 时出现 java.lang.***Error