我有一个尺寸为100*512
的csv文件,我想在spark
进一步处理它。该文件的问题是它不包含标题,即column names
。我需要这些列名称用于machine learning
中的进一步ETL。我在另一个文件(文本文件)中有列名。我必须将这些列名称作为标题放在上面提到的csv文件中。
e.g。
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数据帧来尝试它,但无法获得预期的输出。
答案 0 :(得分:5)
首先阅读你的csv文件:
from pandas import read_csv
df = read_csv('test.csv')
如果数据集中有两列(a列和b列),请使用:
df.columns = ['a', 'b']
将此新数据帧写入csv
df.to_csv('test_2.csv')
答案 1 :(得分: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'})
答案 2 :(得分:1)
Unix的:
cat header_file.csv data_file.csv > data_file.csv
视窗:
type header_file.csv data_file.csv > data_file.csv
答案 3 :(得分:0)
老样子......
列之前的demo.csv内容:
addItem()
xyz.txt的内容:
4444,Drowsy,bit drowsy
45888,Blurred see - hazy,little seeing vision
45933,Excessive upper pain,pain problems
112397013,air,agony
76948002,pain,agony
内嵌评论的代码
Col 1,Col 2,Col 3
demo.csv的内容:
#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)