仅从csv文件中选择列名而不读取整个数据,Python 3.6

时间:2017-09-23 11:19:38

标签: python python-3.x pandas

我想查找超过500个csv文件中的列列表。只读列和&放入数据框或列表,稍后我想导出到csv。

1 个答案:

答案 0 :(得分:2)

pandas可以轻松提取特定列并为您写出新的CSV文件:

import pandas as pd

data = pd.read_csv('input.csv', usecols=[1, 3], index_col=1)
data.to_csv('output.csv')

如果要将多个文件中的相同两列提取到单个输出中,可以执行以下操作:

import pandas as pd
import glob

combined_data = pd.DataFrame()

for csv_file in glob.glob('*.csv'):
    data = pd.read_csv(csv_file, usecols=[1, 3], index_col=1, skiprows=1, header=None, names=['Col1', 'Col2'])
    combined_data = combined_data.append(data)

combined_data.to_csv('output.csv')

这可能需要调整,具体取决于您的文件是否具有标题和相同的列名。

要从所有文件中提取标题(不加载整个文件),您可以按如下方式使用CSV库:

import csv
import glob

with open('headers.csv', 'w', newline='') as f_headers:
    csv_headers = csv.writer(f_headers)

    for csv_file in glob.glob('input*.csv'):
        with open(csv_file, 'r', newline='') as f_csv:
            csv_headers.writerow([csv_file] + next(csv.reader(f_csv)))

这也会将文件名作为每行的第一个条目。