【问题标题】:How do I convert and format a csv to a list of lists with header names included with a values如何将 csv 转换并格式化为包含值的标题名称的列表列表
【发布时间】:2019-08-07 10:48:27
【问题描述】:

我正在尝试加载 csv 文件并将其转换为以下格式的列表列表:

示例:people.csv 的格式为:

Name | Age | Sex
----------------
bob  | 21  | M
Tina | 22  | F
Tim  | 25  | M

我正在尝试将其转换为这种格式的列表列表:

[['Name=bob', 'Age=21', 'Sex=M'],['Name=Tina', 'Age=22', 'Sex=F'], ['Name=Tim','Age=25','Sex=M']] 

其中姓名、年龄和性别是 csv 文件中的列标题。

我曾尝试一次格式化一个值,但有没有更好的方法来执行此操作,无论是否使用 pandas 数据框。

谢谢

【问题讨论】:

    标签: python list csv


    【解决方案1】:

    也许不是最优雅的解决方案,但很容易理解。

    import pandas as pd
    df = pd.read_csv("file_name")
    entries = []
    for i in range(0,len(df)
        tup = (df.loc[i,'Name'],df.loc[i,'Age'],df.loc[i,'sex']
        entries.append(tup)
    

    【讨论】:

      【解决方案2】:

      使用csv 模块 --> csv.DictReader.

      例如:

      import csv
      
      with open(filename) as infile:
          reader = csv.DictReader(infile)
          result = [["{}={}".format(k, v) for k, v in row.items()] for row in reader]
      print(result)
      

      【讨论】:

        【解决方案3】:

        我建议使用 pandas 来完成这项工作

        import pandas as pd
        df = pd.read_csv("file_name") #you can define if there is a header or not in the file
        arr= df.values.tolist()
        

        现在你有了一个包含文件中所有值的二维数组。

        如果您想添加标题 "Name=""age=",您可以继续手动浏览列表添加使用以下函数添加值

        parsedArr = [["Name=" + str(x[0]), "Age=" + str(x[1]), "sex=" + str(x[2])] for x in arr]
        

        或者,更好的是,您可以使用 df.apply 更改数据框为您执行此操作 更改 DataFrame 是一个更快的选择

        【讨论】:

          猜你喜欢
          • 2019-09-19
          • 1970-01-01
          • 2014-03-07
          • 2021-11-29
          • 2019-12-12
          • 2018-09-06
          • 1970-01-01
          • 1970-01-01
          • 2020-06-24
          相关资源
          最近更新 更多