第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將字符串的一部分替換為 null

將字符串的一部分替換為 null

UYOU 2023-06-27 14:31:58
我需要使用 Python 自動將 Excel 文件導入到 PostgreSQL 中。我對 Python 比較陌生,但設法自動創(chuàng)建表?,F在我陷入了將數據導入表的困境。我遇到的問題是在 PostgreSQL 中我已將某些列定義為日期列。但是,許多“日期”列還沒有任何數據。因此它被標記為nan。但是,psycopg2 不喜歡 nan 作為日期列的值,而是期望為空。當將列表轉換為字符串(應傳遞到 )時INSERT INTO {sheet} VALUES ({formatted_data_string}),我相信表的各個條目應該在看起來像這樣的字符串中:'data', 'data', 'data', null, 'data'下面的代碼從 Excel 文件獲取數據,然后創(chuàng)建 formatted_data_string應該插入到 SQL 語句中。 def import_data(path):    xl = pd.ExcelFile(path)    sheets = xl.sheet_names    conn = psycopg2.connect(host=host, port=port, database=database, user=user, password=password)    cur = conn.cursor()    sheet_column_names = []    for sheet in sheets:        if sheet == 'ReadMe':            continue        df = pd.read_excel(xl, sheet)        list_of_rows = df.to_numpy().tolist()        for entry in list_of_rows:            if entry == list_of_rows[0]:                continue            formatted_data = []            for element in entry:                if element == 'nan':                    formatted_data.append('null')                else:                    formatted_data.append(f"'{element}'")            formatted_data_str = ','.join(str(element) for element in formatted_data)            print(formatted_data_str)幾乎所有數據的格式都正確,除了“nan”值仍然顯示為“nan”而不是null我所期望的。我多次檢查了代碼,但不明白為什么它不將 nan 替換為 null。這是我當前從此代碼中獲取的 formatted_data_str 的示例: '25...1','Something','XX','XX','[relToChild, relToParent]','Some Other Data','2018-10-09 06:04:28.015000','nan','1','DISABLED','nan',...這段代碼有問題嗎?或者我是否遺漏了一些明顯的東西來將 nan 替換為不帶引號的 null ?
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

所以我找到了一個解決我的問題的方法,效果很好。使用以下命令創(chuàng)建第二個 DataFrame 會將所有 nan 替換為 None。


df = pd.read_excel(xl, sheet)

df1 = df.where(pd.notnull(df), None)

然后,這允許我使用 For 循環(huán)來定位 None,用 null 替換所有 None。在數據對象周圍添加第二個單引號。


for element in entry:

   if element != None:

      formatted_data.append(f"'{element}'")

      continue

   else:

      formatted_data.append('null')

使用將新列表(formatted_data)轉換為字符串后


formatted_data_str = ','.join(str(element) for element in formatted_data)

生成的字符串采用我上面解釋的所需格式。服務器接受 SQL 語句,并且 PostgreSQL 數據庫中的數據似乎是正確的。我知道這可能不是最好的解決方案,但它對我有用,這就是我現在所需要的。


查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號