[英]Remove last column from large CSV file
我有一個大的 CSV 文件,我想使用 datagrip 上傳到 postgres。 當我上傳它時,我收到一些記錄的以下錯誤:
11807:98: actual: value separator (,), expected: record separator (\n)
問題是只識別了 19 列,並且在極少數記錄中有 20 個值。 對於那些記錄,它根本不導入記錄。 我確實想在我的數據庫中有所有行。
我認為這將是 python 中的小菜一碟。 所以我開始使用 pandas 並使用以下行加載數據:
df = pd.read_csv('filename.csv', sep='delimiter', header=None)
那確實包含文件。 然而,要刪除 19 逗號后面的所有值,或者只添加完整的第 20 列,我以后可以刪除它,這比我預期的要困難得多。 感覺這是一個微不足道的問題,我需要朝着正確的方向努力。
這會生成一個包含 30 列的 dataframe,然后刪除第 20 列之后的所有列。
df = pd.DataFrame({f"col{i}":[1,2,3] for i in range(30)})
df = df.drop(columns=[c for c in df.columns[20:]])
以這種方式將其讀入 dataframe 不會給您帶來任何好處,因為每個單元格都將包含一行文件。
請改用csv
模塊,因為它不會嘗試將文件作為固定寬度的表格讀取。
import csv
with open('filename.csv', 'r') as i, open('fixed.csv', 'w') as o:
cr = csv.reader(i)
cw = csv.writer(o)
for row in cr:
cw.writerow(row[0:19])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.