簡體   English   中英

Python-字符串變量作為列表索引

[英]Python - string variable as list indexes

我有一個列表,例如fruitList = [Apple, Mango, Banana] 我有一個csv文件,其中包含一堆列,其中包括列表中的列。 例如:

Orange Apple Strawberry Banana
   1    12      5         11
   2    3      10         9

如何獲取一列csv(例如,香蕉)作為列表?

到目前為止我嘗試過的是:

data_file = open('fruit_data.csv')
data_reader = csv.reader(data_file, delimiter=",")
header = data_reader.next()

my_list = []

for field in header:
    for fruits in fruitList:
        if(fruits==field):
            mylist = header[fruits]

我知道代碼的最后一行是錯誤的。 我想知道如何使用字符串變量作為列表索引在csv中獲取信息。

謝謝!

您可以采取以下步驟:

import csv
list= [tuple(row) for row in csv.reader(open(filename, 'rU'))]

上面的代碼將以以下形式獲取數據:

list = [('Orange', 'Apple', 'Strawberry', 'Banana'), (1, 12, 5, 11), (2, 3, 10, 9)]

您可以執行的下一步是:

new_list = [x[3] for x in list]

輸出:

new_list = ['Banana', 11, 9]

我希望這可以解決您的問題,如果不能,請告訴我。 我很樂意提供幫助!

和平//

Parthik Bhandari

例如

from collections import defaultdict                                                                 
import csv                                                                                          

the_data = defaultdict(list)                                                                        

with open("fruit_data.csv", "r") as fd:                                                             
    reader = csv.DictReader(fd)                                                                     
    for row in reader:                                                                              
        for fruit, number in row.items():                                                           
            the_data[fruit].append(number)                                                          

for fruit, the_list in the_data.items():                                                            
    print fruit, the_list   

O / P:

Orange ['1', '2']

Strawberry [' 5', ' 10']

Apple [' 12', ' 3']

Banana [' 11', ' 9']

我使用pandas的tolist()命令的貢獻:

import pandas as pd
data_file = pd.read_csv('fruit_data.csv')

# Creating data containers
fruitList = ['Apple', 'Mango', 'Banana']
names_columns = []
list_names = []

# Extracting the columns names from the imported cvs file 
columns = list(data_file)
for i in columns:
    names_columns.append(i)   

# Getting the columns of the csv file as lists when the criteria is meet
for fruit in fruitList:
    for name in names_columns:
        if name==fruit:
            list_names.append(name)

# Printing the desired lists            
    for name in list_names:
        print(name, data_file[name].tolist())

Apple [12, 3]
Banana [11, 9]

暫無
暫無

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

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