我有 67 個 csv 檔案,合并了超過 1gb 的資料。每個 CSV 包含 20 列,但我只需要每個 csv 檔案中的 3 列。我可以成功地將它們全部組合成一個 csv 檔案,但這會創建一個我不需要的龐大檔案。相反,我只希望將所有 67 個檔案中的 3 列合并到一個檔案中(當然,只有三列)。
螢屏截圖在這里
我當前的錯誤訊息是索引超出范圍錯誤,但我不知道如何在此代碼中修復它。這是我正在使用的代碼:
import glob
import pandas as pd
path = "C:/Correct/Path"
file_list = glob.glob(path "/*.csv")
csv_list = []
for file in file_list:
csv_list.append(pd.read_csv(file, delim_whitespace=1, usecols=[9], engine='python'))
csv_merged = pd.DataFrame()
for csv_file in csv_list:
csv_merged = csv_merged.append(
csv_file, ignore_index=True)
csv_merged.to_csv('all_counties.csv', index=False)
uj5u.com熱心網友回復:
您可以使用標準庫模塊csv和pathlib輕松撰寫一個小腳本
import csv
from pathlib import Path
p = Path('C:/Correct/Path')
file_list = p.glob("*.csv")
desired_columns = ['foo', 'bar', 'baz']
desired_rows = []
for csv_file in file_list:
with open(csv_file, 'r') as f:
reader = csv.DictReader(f)
for row in reader:
desired_rows.append({c: row[c] for c in desired_columns})
with open('output.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=desired_columns)
writer.writeheader()
writer.writerows(desired_rows)
兩個不同csv的輸入:
foo,bar,baz,spam,eggs
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
foo,baz,bar,spam,eggs,unused
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
1,2,3,4,5,6
輸出:
foo,bar,baz
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,2,3
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
1,3,2
從那里你已經得到了你的清理資料,并且可以自由地使用你認為合適的 pandas。
E:要從desired_rows您那里洗掉重復的 dicts 有幾個選項,具體取決于 dicts 本身。它的一般要點是
new_list = []
for d in desired_rows:
if d not in new_list:
new_list.append(d)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/461476.html
