2017-10-17 81 views
1

因此,我先從一個空白的DataFrame開始,從SQL語句中根據表名列表拉出一堆新的數據幀,然後將每一個附加到起始數據幀。 例如:「數據類型不明白」當附加數據幀

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可能是沒有行的表。這是一個問題嗎?我已經嘗試打印出每張表的頭部,但仍然無法確定是什麼導致了該錯誤/失敗。

+0

你確定你的查詢給你你期待什麼?嘗試單獨運行它們。 –

+0

嘗試單獨運行'mysql'查詢,收集查詢輸出的文本/ csv文件,然後添加到'df'。這可能有助於查明問題。 –

回答

1

我發現使用老版本的熊貓時,這可能發生在數據框中存在日期字段的情況下(特別是datetime64變體)。在過去,我已經使用了許多解決方法(請參閱下文),但很難確切知道什麼可以幫助您,而無需查看數據。

  1. 將所有日期字段轉換爲熊貓時間戳(df[col_name].apply(pd.Timestamp))。
  2. 將所有日期字段轉換爲字符串(df[col_name].astype(str))。
  3. 您的初始數據框是一個空的數據框。不要嘗試將非空數據框附加到空數據框,而是將初始數據框設置爲等於第一個非空數據框,然後繼續追加。

    if df1.empty: 
        df1 = perT 
    else: 
        df1 = df1.append(perT) 
    
  4. 升級大熊貓:)

+0

我做了第3步和第4步。我相信這個錯誤來自於嘗試附加空數據框(無論是滿的還是全空的)。多謝 – Acoustic77