簡體   English   中英

如何通過第一列和項目值使用Python / Pandas遍歷不同的CSV文件?

[英]How can I iterate through different CSV files with Python/Pandas by first column and item value?

我有一個文件夾,其中有100多個CSV文件,每個文件有4萬多行。 我正在嘗試按第一列遍歷這些文件,該列具有ID號。 我的目的是在CSV文件中查找具有相同ID號的行,然后通過將具有相同ID號的行串聯/放在一起來創建新的CSV文件。

我跳過了前4行,因為它們的數據不相關。

我當前的代碼是:

輸入目錄中的文件夾

for root, dirs, files in os.walk(csv_directory):
    for item in files:
        if item.endswith(".csv"):
            date_string = item.split(".")[1]
            year_string = date_string[:4]
            file_directory = os.path.join(root,item) 
            list_csv = []
            print "Reading %s ..." % item

            # Reads the .csv files  
            with open(file_directory , 'rb') as file:
                reader = csv.reader(file, delimiter = ',')
                next(reader)
                next(reader)
                next(reader)
                next(reader)

                # Takes all rows for ID, col2 ,col3 in the directory
                for row in reader:
                    index = [0,1,8]
                    list_csv.append(row[i] for i in index)
                    list_csv.append(date_string)
                    list_total.append(list_csv)

            print len(list_total) , "rows are added."


print "Total Number of Rows: " , len(list_total)

任何幫助將非常感激!!

您可以按照以下方式使用。

import pandas as pd
from os import listdir
from os.path import join
source_path, dst_path = 'source/path', 'dst/path'

獲取所有.csv文件:

files = [f for f in listdir(source_path) if f.endswith('.csv')]

讀取所有.csv文件,並使用pd.concat()進行合並-與40K行中的〜100個文件組成每個文件,您將擁有〜4m行,除非每個文件具有大量列,否則該行應該是可管理的:

all_files = pd.concat([pd.read_csv(join(source_path, f_name), skiprows=4) for f_name in files])

使用.groupby()將所有文件按id分組(假定在'id_column'找到),並將所有相同ID的文件保存回.csv

files_by_id = all_files.groupby('id_column')
for id, data in files_by_id:
    data.to_csv(join(dst_path, 'file_{}.csv'.format(id)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM