【问题标题】:Python to CSV: transposing and appending values to list of listsPython 到 CSV:将值转置和附加到列表列表
【发布时间】:2017-03-07 15:12:36
【问题描述】:

这可能是基本的,但我时差反应的大脑拒绝找到解决方案。

我有以下列表(或列表列表):

#"variables" names
name=['a', 'b', 'c']
#variables values
value=[[0,1,1],[0,0,0],[1,1,1]]
#id number of each observation
id=[100,134,26]

我想将输出写入 CSV 文件,使其看起来像这样:

a, b, c, id
0, 1, 1, 100
0, 0, 0, 134
1, 1, 1, 26

我可以将任何单个列表(或列表列表)写入 CSV 文件,这没有问题。但是如何转置 id 列表并将其附加到变量值?将名称堆叠在顶部将是一个很大的好处。我总是可以创建两个 CSV 文件,但我不想这样做,因为数据操作中的错误概率呈指数增长。 这是我的 CSV 编写代码(相当标准):

with open('test.csv', 'w', newline='') as f:
     wtr = csv.writer(f, delimiter= ',')
     wtr.writerows(full_data)
#full_data would be the cleaned data to write into CSV file

谢谢!

【问题讨论】:

  • 你的意思是写成dataframe吗?

标签: python list csv


【解决方案1】:

在没有 pandas 的情况下这样做的一种方法。

import csv

fulldata = [name + ['id']] + [val + [id[i]]  for i, val in enumerate(value)]  

with open('mycsv.csv','w') as f:
    mywriter = csv.writer(f)
    mywriter.writerows(fulldata)

会给你:

a,b,c,id                                                                                                        
0,1,1,100                                                                                                       
0,0,0,134                                                                                                       
1,1,1,26 

【讨论】:

  • 啊,当然是索引。谢谢,就像一个魅力!
【解决方案2】:
import pandas as pd

df = pd.DataFrame([i for i in value], columns=name)
df['id'] = id
df.to_csv('test.csv')

【讨论】:

  • 谢谢。我更喜欢另一个答案,只是因为我没有在这台机器上安装 pandas。但从逻辑上讲,它似乎应该起作用。稍后我会探索。
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 2023-01-25
  • 2014-02-14
  • 2023-02-02
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 2017-11-11
相关资源
最近更新 更多