【问题标题】:Read in CSV files horizontally using csvreader in python在 python 中使用 csvreader 水平读取 CSV 文件
【发布时间】:2019-03-15 05:08:03
【问题描述】:

根据我的研究,csvreader 读取的数据格式如下

Name,Date,Job
John,3/14/2019,Doctor
Susan,3/14/2019,Cashier

但是,我存储的数据是这样格式化的

Name,John,Susan,
Date,3/14/2019,3/14/2019
Job,Doctor,Cashier

有没有办法让 CSV 阅读器以这种方式阅读它?我目前在没有它的情况下这样做,但是当逗号之间出现新行时它非常乏味。

【问题讨论】:

  • 为什么不将其存储为普通的 csv?
  • @balderman 这不是我的数据,而是我公司将其存储在 excel 文档中的方式,然后当您将其转换为 csv 文件以便于阅读时,它会像这样保存。
  • 您要转置吗? list(zip(*reader)) 之类的东西会起作用

标签: python file csv


【解决方案1】:

我知道您正在尝试使用 csv 库,但使用 pandas 和转置操作很容易。

将熊猫导入为 pd

df = pd.read_csv('horizo​​ntal.csv', index_col=0)

>>> df
           John      Susan
Name                      
Date  3/14/2019  3/14/2019
Job      Doctor    Cashier

>>> df.T
Name        Date      Job
John   3/14/2019   Doctor
Susan  3/14/2019  Cashier

【讨论】:

    【解决方案2】:

    试试(not_csv.txt 是一个包含您提供的数据的文件)

    zip 创建的数据结构是一个元组列表。

    了解 zip here

    with open('not_csv.txt', 'r') as f:
        data = [line.strip() for line in f.readlines()]
        for idx, entry in enumerate(data):
            if idx == 0:
                names = entry.split(',')[1:]
            elif idx == 1:
                dates = entry.split(',')[1:]
            elif idx == 2:
                jobs = entry.split(',')[1:]
    merged_data = zip(names, dates, jobs)
    
    print(merged_data)
    

    输出

    [('John', '3/14/2019', 'Doctor'), ('Susan', '3/14/2019', 'Cashier')]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2017-12-07
      • 1970-01-01
      • 2011-08-12
      • 2018-12-14
      相关资源
      最近更新 更多