【问题标题】:How to read CSV File and add each cell in a row to a list?如何读取 CSV 文件并将一行中的每个单元格添加到列表中?
【发布时间】:2019-01-15 14:31:53
【问题描述】:

我有一个如下所示的 CSV 文件:

104 109 113 111 108 114
95  100 109 103 103 110

两行,每个数字都有自己的单元格。

如何读取每行的 CSV 文件并将该行的每个单元格添加到列表中?

输出应如下所示:

List_1 = [104, 109, 113, 111, 108, 114]
List_2 = [95, 100, 109, 103, 103, 110]

我还需要将列表中的数字作为整数而不是字符串。

【问题讨论】:

  • 所以你只有两行?
  • 目前,是的!但未来还会有更多。
  • 所以你想把所有的行放在列表中?我认为如果你对你想要达到的目标进行一些扩展会更好。也许你可以使用熊猫。
  • 目前我有两排温度。高和低。我需要两个列表中的那些(目前)。我从未与 Pandas 合作过。

标签: python csv


【解决方案1】:

我只会将每一行存储在字典中:

d = {}
with open('rows.csv') as f:
    for row, line in enumerate(f, start=1):
        d['Line_%d' % row] = list(map(int, line.split()))

print(d)
# {'Line_1': [104, 109, 113, 111, 108, 114], 'Line_2': [95, 100, 109, 103, 103, 110]}

然后你可以像这样访问每一行:

>>> d['Line_1']
[104, 109, 113, 111, 108, 114]
>>> d['Line_2']
[95, 100, 109, 103, 103, 110]

更新:

根据 cmets 的要求,如果您的文件有一个分号 ; 作为分隔符,您可以使用 csv 库:

from csv import reader

d = {}
with open('rows.csv') as f:
    csv_reader = reader(f, delimiter=';')
    for i, line in enumerate(csv_reader, start=1):
        d['Line_%d' % i] = list(map(int, line))

print(d)

【讨论】:

    【解决方案2】:

    只需使用map 将字符串列表转换为整数列表并附加到输出列表中

    final=[]
    with open('test.csv') as f:
        for row in f:
            final.append(list(map(int,row)))
    

    【讨论】:

      【解决方案3】:

      你可以使用pandasread_csv函数来读取CSV文件。之后,您将拥有一个 DataFrame 对象。使用df.values.tolist(),您将获得所有行的列表作为列表。

      【讨论】:

        【解决方案4】:
        my.csv:    
        1 2 3 4 5
        6 7 8 9 0
        

        Python:

        with open("my.csv") as f:
            lists = [ list(map(int, i.split())) for i in f.readlines() ]
        
        print(lists[0])
        print(lists[1])
        

        输出:

        [1, 2, 3, 4, 5]  
        [6, 7, 8, 9, 0]
        

        【讨论】:

          【解决方案5】:

          如果您想稍后对数据进行数学运算,您可以考虑使用numpy 模块,您可以使用numpy.loadtxt 函数(请记住csv 文件实际上是纯文本文件)。 使用示例: test.csv 是我创建的文件,它包含 2 行,每行有 3 个值

          1 2 3
          4 5 6
          

          然后您可以通过以下方式创建 numpy 数组:

          import numpy as np
          data = np.load('test.csv',int,delimiter=' ')
          

          test.csv 是文件名,int 是您想要整数的信息,delimiter=' ' 表示文件中的值是用空格分隔的。您可以通过给出行索引和元素索引来访问 numpy 数组中的值

          print(data[0][0]) #prints 1
          print(data[1][2]) #prints 6
          

          如果您想获得 list 的值,只需将 data[index_of_row] 传递给 list()

          list1 = list(data[0])
          list2 = list(data[1])
          print(list1) #prints [1, 2, 3]
          print(list2) #prints [4, 5, 6]
          

          【讨论】:

            【解决方案6】:

            您也可以通过这种方式解决它,使用 csv.reader() 模块。

            with open(filename) as f:
                reader = csv.reader(f)
                next(reader)
            
                list_ = []
            
                for row in reader:
                    list_.append(row)
            

            访问第一行(示例中为line_1)line_1 = list_[0]

            【讨论】:

              猜你喜欢
              • 2022-10-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-13
              • 1970-01-01
              • 2017-08-20
              • 2019-09-12
              • 1970-01-01
              相关资源
              最近更新 更多