【问题标题】:More efficient way to sort a csv into seperate lists? [duplicate]将 csv 排序为单独列表的更有效方法? [复制]
【发布时间】:2017-03-14 00:38:56
【问题描述】:

我从这里下载了一个数据列表:https://catalog.data.gov/dataset/fdic-failed-bank-list

这是一个非常标准的数据集:

Bank Name,City,ST,CERT,Acquiring Institution,Closing Date,Updated Date
Proficio Bank,Cottonwood Heights,UT,35495,Cache Valley Bank,3-Mar-17,8-Mar-17
Seaway Bank and Trust Company,Chicago,IL,19328,State Bank of Texas,27-Jan-17,17-Feb-17
Harvest Community Bank,Pennsville,NJ,34951,First-Citizens Bank & Trust Company,13-Jan-17,17-Feb-17
Allied Bank,Mulberry,AR,91,Today's Bank,23-Sep-16,17-Nov-16

但是,我用来将每一列放入列表的代码比我认为的要冗长得多:

import csv

a = []
b = []
c = []
d = []
e = []
f = []
g = []

with open('banklist.csv', 'rb') as cf:
     bl = csv.reader(cf, delimiter=',')
     for row in bl:
          a.append(row[0])
          b.append(row[1])
          c.append(row[2])
          d.append(row[3])
          e.append(row[4])
          f.append(row[5])
          g.append(row[6])


print a
print b
print c
print d
print e
print f
print g

必须有一种方法可以使这更简单。

【问题讨论】:

  • 简单地说:您正在尝试转置它。使用zip
  • 你想做什么?
  • 你可以在一个衬里中完成整个事情:horizo​​ntal = (lambda fi: (zip(*[item.split(',') for item in fi.readlines()][:: -1]), fi.close()))(open('banklist.csv', 'rb'))[0]

标签: python list csv row multiple-columns


【解决方案1】:

是的,有一个更好的方法:使用 pandas DataFrames。 DataFrame 中的每一列都是一个单独的列表:

df = pd.read_csv('your_file.csv')
# Column extraction example:
df['City'].values
# array(['Cottonwood Heights', 'Chicago', 'Pennsville', 'Mulberry'], dtype=object)

如果你真的想要一个 Python 列表(不需要这个 - 你可以在 Pandas 中处理数据!),将一个数组强制为一个列表:

df['City'].values.tolist()
# ['Cottonwood Heights', 'Chicago', 'Pennsville', 'Mulberry']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-24
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    相关资源
    最近更新 更多