0
我想查找超過500個csv文件中存在的列的列表。只讀列&放入數據框或列表中,稍後我想導出到csv。從csv文件中只選擇列名而不讀取整個數據,Python 3.6
我想查找超過500個csv文件中存在的列的列表。只讀列&放入數據框或列表中,稍後我想導出到csv。從csv文件中只選擇列名而不讀取整個數據,Python 3.6
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)))
這也把文件名作爲第在每一行上輸入。
謝謝,但我想列名稱,這也有助於我的其他要求。 –
因此,您試圖創建一個包含500個文件中所有標題行的CSV文件? –
我只想知道所有500個csv文件中存在的列 –