簡體   English   中英

Python方法或預先存在的模塊通過標頭(而不是列ID)訪問csv

[英]Python method or pre-existing module to access csv via headers instead of column ID's

我被迫從一個CSV文件而不是一個數據庫中進行項目工作……很煩人,但事實如此。 我無法控制CSV的發布組織。我可以合理地保證名稱將保留在CSV標頭中。

我只是准備編寫一些代碼以返回字符串匹配中的列ID,但是想知道是否有一個模塊可以為我執行此操作?

e.g.
data = csv.csvRowData[5] becomes
data = csv.csvRowData[find_rowID('column_name')]

如果我的代碼語法不正確,請原諒我,它來自php。 將弄清楚如何使其在語法中起作用。

我使用pandas軟件包,有一個功能強大的read_csv實用程序http://pandas.pydata.org/pandas-docs/stable/generation/pandas.io.parsers.read_csv.html

cat test.csv

date,value
2014,Hi
2015,Hello

import pandas as pd
df = pd.read_csv('test.csv')

這將返回一個pandas.DataFrame ,它會執行您想要的操作(以及更多操作,例如,轉換列上的數據類型),請在IPython上進行嘗試:

In [5]: df['date']
Out[5]:
0    2014
1    2015
Name: date, dtype: int64

In [6]: df.columns
Out[6]: Index([u'date', u'value'], dtype='object')

python標准庫包括csv模塊

它提供了DictReader類,該類允許您通過列標題標簽訪問行的數據。

DictReader將CSV文件中的第一行作為列標題,然后將隨后的每一行作為dict提供,其中列標簽作為鍵,而行的數據作為值。

例如,如果people.csv看起來像這樣:

"First Name","Last Name"
Peter,Venkman
Egon,Spengler

您可以像這樣使用DictReader:

import csv

with open('people.csv') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    for row in csv_reader:
        print row["Last Name"]

# will output
Venkman
Spengler

暫無
暫無

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

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