【问题标题】:Adding the header to a csv file将标头添加到 csv 文件
【发布时间】:2016-09-13 20:09:35
【问题描述】:

我有一个尺寸为 100*512 的 csv 文件,我想在 spark 中进一步处理它。该文件的问题在于它不包含标题,即 column names 。我需要这些列名以在 machine learning 中进行进一步的 ETL。我在另一个文件(文本文件)中有列名。我必须将这些列名作为标题放在上面提到的 csv 文件中。 例如

CSV 文件:-

ab 1 23 sf 23 hjh

hs 6 89 iu 98 adf

gh 7 78 pi 54 ngj

jh 5 22 kj 78 jdk

列标题文件:-

一、二、三、四、五、六

我想要这样的输出:-

一二三四五六

ab 1 23 sf 23 hjh

hs 6 89 iu 98 adf

gh 7 78 pi 54 ngj

jh 5 22 kj 78 jdk

请提出一些将列标题添加到 CSV 文件的方法。(不替换 csv 文件的行。 我通过将其转换为 pandas 数据框进行了尝试,但无法获得预期的输出。

【问题讨论】:

  • 只需在将 csv 数据输入文件之前写入包含标题的行。你试过什么?
  • 你说的不替换csv文件的行是什么意思?

标签: python csv


【解决方案1】:

首先阅读您的 csv 文件:

from pandas import read_csv      
df = read_csv('test.csv')

如果您的数据集中有两列(a 列和 b 列),请使用:

df.columns = ['a', 'b']

将此新数据帧写入 csv

df.to_csv('test_2.csv')

【讨论】:

  • 它告诉没有名为 Writer 的模块
  • 我认为这与您使用的软件包有关。上面提到的代码不使用任何名为 Writer 的包/模块。你能把你的代码链接发给我吗?
【解决方案2】:

Unix:

cat header_file.csv data_file.csv > data_file.csv

窗户:

type header_file.csv data_file.csv > data_file.csv

【讨论】:

  • 是的。每个标题元素之间都有逗号。
  • 说到 UNIX 部分,这会导致“输入文件是输出文件”消息,并且 data_file.cvs 将结束,只有 header_file.csv 的内容
【解决方案3】:

你可以使用它:

    import csv

    with open('names.csv', 'w') as csvfile:
        fieldnames = ['first_name', 'last_name']
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

        writer.writeheader()
        writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
        writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
        writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

【讨论】:

    【解决方案4】:

    有点老套路……

    demo.csv 列前的内容:

    4444,Drowsy,bit drowsy
    45888,Blurred see - hazy,little seeing vision
    45933,Excessive upper pain,pain problems
    112397013,air,agony
    76948002,pain,agony
    

    xyz.txt 的内容:

    Col 1,Col 2,Col 3
    

    内嵌 cmets 的代码

    #Open CSV file
    with open("demo.csv", "r+") as f:
        #Open file which has header
        with open("xyz.txt",'r') as fh:
            #Read header
            header = fh.read()
            #Read complete data of CSV file
            old = f.read()
            #Get cursor to start of file
            f.seek(0)
            #Write header and old data to file.
            f.write(header+ "\n" + old)
    

    demo.csv 的内容:

    Col 1,Col 2,Col 3
    4444,Drowsy,bit drowsy
    45888,Blurred see - hazy,little seeing vision
    45933,Excessive upper pain,pain problems
    112397013,air,agony
    76948002,pain,agony
    

    【讨论】:

      猜你喜欢
      • 2013-12-19
      • 1970-01-01
      • 2015-12-02
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      相关资源
      最近更新 更多