附加DataFrames时“数据类型不被理解”

时间:2017-10-17 03:01:17

标签: python sql python-3.x pandas append

所以我开始使用空白的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。我很肯定它是由追加线引起的(我用print语句检查过)。可能导致什么? perT可能是一个没有行的表。这是一个问题吗?我已经尝试打印出每个表的头部,但仍然无法确定导致该错误/失败的原因。

1 个答案:

答案 0 :(得分:3)

我发现,对于旧版本的pandas,当数据框中存在日期字段时(特别是Name变体)会发生这种情况。在过去,我使用过多种解决方法(见下文),很难确切地知道什么可以帮助您而不会看到数据。

  1. 将所有日期字段转换为pandas时间戳(datetime64)。
  2. 将所有日期字段转换为字符串(df[col_name].apply(pd.Timestamp))。
  3. 您的初始数据帧是一个空数据帧。不要尝试将非空数据帧附加到空数据帧,而是将初始数据帧设置为等于第一个非空数据帧,然后继续追加。

    df[col_name].astype(str)
  4. 升级大熊猫:)