将标题添加到csv文件

5
我有一个csv文件,大小为100*512,我想在spark中进一步处理它。这个文件的问题是它没有标题,即列名。 我需要这些列名进行进一步的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

列标题文件 :-

one,two,three,four,five, six

我想要的输出如下:

one two three four five six

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数据框,但无法获得预期的输出。


2
在将CSV数据提供给文件之前,只需编写包含标题的行即可。你尝试过什么? - Serge Ballesta
1
你所说的“不替换CSV文件的行”是什么意思? - Ma0
4个回答

9

首先读取您的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的模块。 - venkat
我认为这与您使用的包有关。上面提到的代码没有使用名为Writer的任何包/模块。您能否将您的代码链接发送给我? - Sayali Sonawane

2

Unix:

cat header_file.csv data_file.csv > data_file.csv

Windows:

type header_file.csv data_file.csv > data_file.csv

1
是的,这样做没问题。每个标题元素之间都有逗号。 - GreenAsJade
说到UNIX部分,这会导致“输入文件是输出文件”的消息,并且data_file.cvs最终只会包含header_file.csv的内容。 - dadadima

2

你可以使用它:

    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'})

0

有点老旧的方式...

列出现前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

带有内联注释的代码

#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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接