【问题标题】:how to write a single row cell by cell and fill it in csv file如何逐个单元格写入单行单元格并将其填充到csv文件中
【发布时间】:2018-09-25 09:10:49
【问题描述】:

我有一个只有列标题的 CSV 文件:

 cat mycsv.csv
 col_1@@@col_2@@@col_3@@@col_3

我必须在 CSV 文件的每个单元格中用 None 值填充一行。有人可以建议我在 Python 和 Pandas 中做到这一点的最佳优化方式吗?

填完行后,csv 文件应如下所示:

 cat mycsv.csv
 col_1 , col_2 , col_3 , col_3
 0@@@None@@@None@@@None

如何插入索引和分隔符是 @@@ 而不是 , ?我收到一个错误:

tmp.to_csv(csvFile,sep='@@@',index=True) 
 , line 1381, in to_csv
formatter.save()
 3.6.1/linux_x86_64/lib/python3.6/site-packages/pandas/formats/format.py", line 1473, in save
self.writer = csv.writer(f, **writer_kwargs)
  TypeError: "delimiter" must be a 1-character string
Exception ignored in: <module 'threading' from Traceback (most recent call last):
File python-3.6.1/linux_x86_64/lib/python3.6/threading.py", line 1015, in 
_delete
del _active[get_ident()] 
KeyError: 140459817715712

【问题讨论】:

  • 您不是在寻找最优化的方法,而是在实施任何方法方面取得了进展?请展示您迄今为止从研究中得到的结果。

标签: python pandas


【解决方案1】:

@ 还是 , ?如果你使用正式的csv文件,标题的分隔符应该和内容一样。

如果你的意思是,,你可以使用类似的东西。

import pandas as pd
# just for abrevation
tmp = pd.read_csv("mycsv.csv",sep=',')
tmp.loc[0,:] = "None"
tmp.to_csv("mycsv.csv",sep=',',index=False)

如果你的意思是@,我建议你不要使用pandas。只需使用简单的IO 方式。

tmp = open("mycsv.csv","r").read()
tmp = tmp + "\n" + "@@@".join(["None"] * len(tmp.split(',')))
with open("mycsv.csv","w") as f1:
    f1.write(tmp)

【讨论】:

    【解决方案2】:

    您正在尝试做的事情是相当不标准的。首先读取第一行作为标题并使用您的@@@ 分隔符将其拆分。接下来打开一个输出文件并使用, 作为分隔符写入此标头。接下来使用@@@ 分隔符编写您的row。例如:

    row = [0, None, None, None]
    
    with open('mycsv.csv') as f_input:
        header = next(f_input).strip().split('@@@')
    
    with open('mycsv2.csv', 'w') as f_output:
        f_output.write(' , '.join(header) + '\n')
        f_output.write('@@@'.join(map(str, row)) + '\n')
    

    如果mycsv.csv 包含:

    col_1@@@col_2@@@col_3@@@col_3        
    

    那么mycsv2.csv会写成:

    col_1 , col_2 , col_3 , col_3
    0@@@None@@@None@@@None
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2021-01-03
      相关资源
      最近更新 更多