我正在抓取專案,我正在使用 Postgres。我已經手動設定了所有表格,其中包括典型的資料型別,如日期時間、整數、文本和浮點數。
但我遇到了一個問題。由于我刮了很多欄位,所以總是有一些欄位丟失,它們變成了nan。由于 nan 是 float 型別,因此當我嘗試將一個浮點值推送到一個需要日期時間或文本物件的列中時,我會收到一個錯誤。
至少我是這么相信的。錯誤資訊不是很清楚。
我基本上都采用只熊貓(df.to_sql我創建的SQLAlchemy中的表)之后declarative_base。
我的程序是這樣的:
obj = Scrape() # Scrape() includes all relevant methods
obj.get_data()
obj.create_a_df()
obj.df.to_sql('table', con=engine, [...])
只要當前刮取 ( obj.get_data()) 中的值不存在,它就會變為nan。由于nan具有浮動型別,我無法將其發布到除了浮動之外的其他任何內容的表格中。
Error:
[SQL: INSERT INTO company_statistics (my column name) VALUES (my df_columns)] [parameters:
{my data as dictionary}]
(Background on this error at: https://sqlalche.me/e/14/9h9h)
不能很好地診斷它,但我希望它是上面描述的原因。有什么辦法嗎?是否有意義df.fillna(None)或是否有任何我不知道的可用關鍵字?
uj5u.com熱心網友回復:
你也可以考慮obj.df.dropna(inplace=True)。這將簡單地洗掉包含NaN在任何列中的所有行。
uj5u.com熱心網友回復:
擺脫NaNs不會解決這個問題嗎?Using.fillna()會將所有NaN值替換為您在其中宣告的任何值。你可以把它放在你的抓取方法中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384191.html
標籤:Python 熊猫 PostgreSQL的 sqlalchemy
下一篇:如何僅選擇基于另一列條件的值
