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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

UYOU 2023-06-27 14:31:58
我需要使用 Python 自動(dòng)將 Excel 文件導(dǎo)入到 PostgreSQL 中。我對(duì) Python 比較陌生,但設(shè)法自動(dòng)創(chuàng)建表?,F(xiàn)在我陷入了將數(shù)據(jù)導(dǎo)入表的困境。我遇到的問(wèn)題是在 PostgreSQL 中我已將某些列定義為日期列。但是,許多“日期”列還沒(méi)有任何數(shù)據(jù)。因此它被標(biāo)記為nan。但是,psycopg2 不喜歡 nan 作為日期列的值,而是期望為空。當(dāng)將列表轉(zhuǎn)換為字符串(應(yīng)傳遞到 )時(shí)INSERT INTO {sheet} VALUES ({formatted_data_string}),我相信表的各個(gè)條目應(yīng)該在看起來(lái)像這樣的字符串中:'data', 'data', 'data', null, 'data'下面的代碼從 Excel 文件獲取數(shù)據(jù),然后創(chuàng)建 formatted_data_string應(yīng)該插入到 SQL 語(yǔ)句中。 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)幾乎所有數(shù)據(jù)的格式都正確,除了“nan”值仍然顯示為“nan”而不是null我所期望的。我多次檢查了代碼,但不明白為什么它不將 nan 替換為 null。這是我當(dāng)前從此代碼中獲取的 formatted_data_str 的示例: '25...1','Something','XX','XX','[relToChild, relToParent]','Some Other Data','2018-10-09 06:04:28.015000','nan','1','DISABLED','nan',...這段代碼有問(wèn)題嗎?或者我是否遺漏了一些明顯的東西來(lái)將 nan 替換為不帶引號(hào)的 null ?
查看完整描述

1 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

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


df = pd.read_excel(xl, sheet)

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

然后,這允許我使用 For 循環(huán)來(lái)定位 None,用 null 替換所有 None。在數(shù)據(jù)對(duì)象周?chē)砑拥诙€(gè)單引號(hào)。


for element in entry:

   if element != None:

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

      continue

   else:

      formatted_data.append('null')

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


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

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


查看完整回答
反對(duì) 回復(fù) 2023-06-27
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)