【问题标题】:Write list to csv with new column in for-loop在for循环中使用新列将列表写入csv
【发布时间】:2021-08-19 04:28:54
【问题描述】:

我想在 for 循环中将列表写入 csv 文件,并且每次都在不同的列中。 例如,第一次迭代我生成一个列表 = [1,2,3,4,5],第二次迭代我有一个列表 = [1,2,3]。我希望输出 .csv 看起来像:

col1.     col2
---------------
  1        1
  2        2
  3        3
  4
  5

我得到以下代码:

## open csv file
with open(pic_path + 'file.csv', "w+") as my_csv:

for loop:
    (## do something.... and generate a list)
    
    ## write list as column to csv file
    csvWriter = csv.writer(my_csv)
        for val in list:
            csvWriter.writerows([val])

输出看起来像这样:

col1
-----
  1       
  2        
  3        
  4
  5
  1
  2
  3

上面所做的是它继续写入第一列,并且在下一次迭代时不会更改为新列。如何告诉python这样做?

【问题讨论】:

  • 这可能超出了 Python CSV Writer 提供的范围,一种解决方法是读入 CSV 附加您的附加列并重新写入。 csv 并没有真正看到列,它看到带有值分隔符的行和换行符以开始新行...(或该格式的变体)这是一个类似的问题,其中包含各种黑客来实现您所要求的 @987654321 @

标签: python list csv write


【解决方案1】:

一个简单的方法是使用 pandas:

import pandas as pd
_csv = pd.read_csv("file.csv") #read your csv file
_csv.to_csv("new_file.csv") #write your data in the new csv file

# you can write by column too
_csv["col1"].to_csv("other_new_file.csv") #write col1 in the other new csv file

【讨论】:

    【解决方案2】:
    1. 生成列表列表
    2. 使用 zip、numpy 或任何其他方法转置列表列表
    3. 然后在 csvwriter 中以标准方式打印出来

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-21
      • 2018-01-19
      • 2016-09-30
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      相关资源
      最近更新 更多