簡體   English   中英

從 csv 文件的集合中提取一列並用所述數據構建一個新表

[英]Extracting a column from a collection of csv files and constructing a new table with said data

我是 Python 的新手,在 MATLAB 方面有更多經驗。 我目前正在嘗試編寫一個腳本,該腳本基本上遍歷一個文件夾以獲取所有.csv 文件,從 csv 文件 1 中提取第 14 列並將其添加到新表的第 1 列,從 Z628ZCB15675FFE2888AFE3FZ 文件中提取第 14 列將其添加到新表的第 2 列,以從文件夾中的所有 csvfiles 構建第 14 列的表。 理想情況下,我希望新表的標題顯示已從中提取所述列 14 的相應文件名。

我認為 Python 是 base0,所以我仔細檢查了它是否讀取了所需的列,但是就我的代碼而言,我只能讓它打印一個數組中所有文件的第 14 列,我不確定如何將其拆分以將其放入表中。 也許通過 dataframe,雖然我不完全確定它們是如何工作的。 任何幫助將不勝感激!

下面附上代碼:

import os
import sys
import csv
pathName = "D:/GLaDOS-CAMPUS/data/TestData-AB/"
numFiles = []
fileNames = os.listdir(pathName)
for fileNames in fileNames:
    if fileNames.endswith(".csv"):
        numFiles.append(fileNames)
        print(numFiles)
for i in numFiles:
    file = open(os.path.join(pathName, i), "rU")
    reader = csv.reader(file, delimiter=',')
    for column in reader:
         print(column[13])

查找文件。

我不確定您查找文件的方式是否正確。 因為我沒有包含csv文件的文件夾。 但我可以說使用glob獲取文件列表會更好:

from glob import glob
files = glob("/Path/To/Files/*.csv")

這將返回所有csv文件。

讀取CSV文件

現在我們需要找到一種方法來讀取所有文件並獲取13th列。 我不知道這是否矯枉過正,但我更喜歡使用pandasnumpy來獲得13th列。

要使用pandas讀取csv文件的列,可以使用:

pd.read_csv(file, usecols=[COL])

現在我們可以遍歷文件並獲得13th列:

columns = [pd.read_csv(file, usecols=[2]).values[:, 0] for file in files]

請注意,我們將所有值轉換為numpy arrays。

合並所有列

columns中,我們將每一列作為列表的一個元素。 所以這是技術行。 不是列。 現在我們應該得到數組的轉置,使它變成列:

pd.DataFrame(np.transpose(columns))

編碼

整個代碼如下所示:

from glob import glob
import pandas as pd
import numpy as np

files = glob("/Path/To/Files/*.csv")
columns = [pd.read_csv(file, usecols=[2]).values[:, 0] for file in files]
print(pd.DataFrame(np.transpose(columns)))

暫無
暫無

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

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