【问题标题】:How to convert CSV file to python dictionary如何将CSV文件转换为python字典
【发布时间】:2018-08-13 01:55:42
【问题描述】:

如果我在下面有一个 CSV (info.csv) 文件:

180101,S1,-1

180101,S2,15

180102,S4,-5

180103, S1, -5

...

这些列分别表示“日期”、“代码”、“信息1”。

我想转换原始数据中匹配的新代码(csv文件,newcode.scv)。

如新的代码映射如下:

180101, N1

180102, N2

180103, W1

...

将其视为一对一关系,没有重复。

因此得到了新数据:

180101, N1, -1

180101, N2, 15

180102, N2, -5

180103,W1,-5

有九种奇特的转换方式吗?

【问题讨论】:

    标签: python pandas csv dictionary


    【解决方案1】:

    标准库的 csv 模块有许多有用的函数来处理 csv 文件,包括读取和写入它们的简单方法。 DictReader 是您想要查看的用于将条目转换为字典的工具。

    csv module documentation

    【讨论】:

      【解决方案2】:

      一种方法是使用pandas,它专门用于矢量化计算。纯粹的csv 方法可能是基于循环且效率低下的。

      import pandas as pd
      
      df = pd.read_csv('info_in.csv', sep=', ', engine='python',
                       header=None, names=['date', 'code', 'info1'])
      
      #      date code  info1
      # 0  180101   S1     -1
      # 1  180101   S2     15
      # 2  180102   S4     -5
      # 3  180103   S1     -5
      
      d = {'S1': 'N1', 'S2': 'N2', 'S4': 'W1'}
      df['code'] = df['code'].map(d)
      df.to_csv('info_out.csv', index=False)
      
      #      date code  info1
      # 0  180101   N1     -1
      # 1  180101   N2     15
      # 2  180102   W1     -5
      # 3  180103   N1     -5
      

      【讨论】:

      • pandas 最有可能完成这项任务。
      • @allo,这取决于您的数据大小/项目范围。这可能不是用户对数据进行的唯一操作。
      猜你喜欢
      • 2021-12-22
      • 2017-09-13
      • 2021-12-18
      • 2020-12-24
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 2023-03-20
      • 2017-03-27
      相关资源
      最近更新 更多