我有67个csv文件超过1gb的数据组合。每个CSV文件包含20列,但我只需要每个CSV文件中的3列。我可以成功地将它们合并到一个csv文件中,但这会创建一个我不需要的庞大文件。相反,我只希望将所有67个文件中的3列合并到一个文件中(当然,只有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)
您可以轻松地使用标准库模块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
从那里你已经得到了你的清理数据,并可以自由地使用熊猫,你认为合适。
E:要从desired_rows
中删除重复的字典,您有几个选项,具体取决于字典本身。它的大意是
new_list = []
for d in desired_rows:
if d not in new_list:
new_list.append(d)