在pandas read_csv中,有沒有一種方法來指定例如。 col1,col15,全線?pandas dataframe read_csv,指定列並將整行保留爲一個字符串
我想從一個文本文件中導入約700000行數據,這個文件有帽子'^'作爲分界符,沒有文本限定符,並且回車符爲行分隔符。
從文本文件我需要列1,列15,然後在表/數據框的三列中的整個行。
我已經搜索瞭如何在熊貓中做到這一點,但不知道它足夠好,以獲得邏輯。我可以導入所有26列罰款,但這並不能幫助我的問題。
my_df = pd.read_csv("tablefile.txt", sep="^", lineterminator="\r", low_memory=False)
或者,我可以用標準的Python把數據插入到表,但這需要約4小時的70萬行。這對我來說太長了。
count_1 = 0
for line in open('tablefile.txt'):
if count_1 > 70:
break
else:
col1id = re.findall('^(\d+)\^', line)
col15id = re.findall('^.*\^.*\^(\d+)\^.*\^.*\^.*\^.*\^.*\^.*\^.*\^.*\^.*\^.*\^.*', line)
line = line.strip()
count_1 = count_1 + 1
cur.execute('''INSERT INTO mytable (mycol1id, mycol15id, wholeline) VALUES (?, ?, ?)''',
(col1id[0], col15id[0], line,))
conn.commit()
print('row count_1=',count_1)
在大熊貓read_csv,是否有指定例如一種方式。 col1,col15,全線?
如上,col1
和col15
是數字和wholeline
是一個字符串
- 我不想重新導入後的字符串作爲我可能會失去在這個過程中的某些字符。
感謝
編輯: 提交到數據庫中的每一行燃燒時間。
僅使用python時,應該在循環之外編譯一次正則表達式。這一定會加快速度 –
我不明白這是如何工作的,我認爲re.findall(regex,object)在調用re.findall之前需要創建對象。你有一個例子嗎? – CArnold