【问题标题】:Writing a nested list into CSV (Python)将嵌套列表写入 CSV (Python)
【发布时间】:2018-08-10 23:47:43
【问题描述】:

我有一个如下所示的列表:

hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]

我只是想将它写入一个 csv 文件,如下所示:

keyword 1           keyword 2          frequency
case                iphone             91524
adapter             iphone             12233
battery             smartphone         88884

我想不通。我也无法将列表转换为 DataFrame。我尝试应用这里建议的一些代码Writing a Python list of lists to a csv file,但没有成功。

【问题讨论】:

  • writer.writerows((a,b,c) for (a, b), c in data)
  • 如果您要使用该数据,也可以查看 pandas。

标签: python list pandas csv


【解决方案1】:

如果在pandas

s=pd.Series(dict(hello)).reset_index()
s.columns=['keyword 1', 'keyword 2', 'frequency']
s
Out[1012]: 
  keyword 1   keyword 2  frequency
0   adapter      iphone      12233
1   battery  smartphone      88884
2      case      iphone      91524

【讨论】:

    【解决方案2】:

    你可以使用解包:

    import csv
    hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
    with open('filename.csv', 'w') as f:
       write = csv.writer(f)
       write.writerows([['keyword 1', 'keyword 2', 'frequency']]+[[a, b, c] for [a, b], c in hello])
    

    【讨论】:

      【解决方案3】:

      Pandas 对此很方便:

      import pandas as pd
      
      hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
      
      df = pd.DataFrame([[i[0][0], i[0][1], i[1]] for i in hello],
                        columns=['keyword 1', 'keyword 2', 'frequency'])
      
      #   keyword 1   keyword 2  frequency
      # 0      case      iphone      91524
      # 1   adapter      iphone      12233
      # 2   battery  smartphone      88884
      
      df.to_csv('file.csv', index=False)
      

      【讨论】:

        【解决方案4】:

        如果您可以使用pandas,您可以执行以下操作:

        import pandas as pd
        hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
        
        df=pd.DataFrame({'keyword1':[i[0][0] for i in hello], 'keyword2':[i[0][1] for i in hello], 'frequency':[i[1] for i in hello]})
        
        df[['keyword1', 'keyword2', 'frequency']].to_csv('test.csv')
        

        【讨论】:

        • 这对我来说似乎不是一个特别好的解决方案。循环hello 三次似乎没有必要。
        猜你喜欢
        • 2020-01-03
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 2021-08-15
        • 1970-01-01
        • 2013-10-20
        • 2021-11-09
        • 1970-01-01
        相关资源
        最近更新 更多