我有一个尺寸为
100*512
的 csv 文件,我想在 spark
中进一步处理它。该文件的问题是它不包含标题,即 column names
。 我需要这些列名称以在 machine learning
中进行进一步的 ETL。我在另一个文件(文本文件)中有列名。我必须将这些列名称作为标题放在上面提到的 csv 文件中。
例如
CSV 文件:-
ab 1 23 平方英尺 23 hjh
hs 6 89 iu 98 adf
gh 7 78 pi 54 ngj
jh 5 22 kj 78 jdk
列标题文件:-
一、二、三、四、五、六
我想要这样的输出:-
一二三四五六
ab 1 23 平方英尺 23 hjh
hs 6 89 iu 98 adf
gh 7 78 pi 54 ngj
jh 5 22 kj 78 jdk
请建议一些将列标题添加到 CSV 文件中的方法。(无需替换 csv 文件的行。 我尝试将其转换为 pandas 数据框,但无法获得预期的输出。
首先读取您的 csv 文件:
from pandas import read_csv
df = read_csv('test.csv')
如果您的数据集中有两列(a 列和 b 列),请使用:
df.columns = ['a', 'b']
将此新数据框写入 csv
df.to_csv('test_2.csv')
你可以使用它:
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'})
Unix:
cat header_file.csv data_file.csv > data_file.csv
窗户:
type header_file.csv data_file.csv > data_file.csv
有点老方法...
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
如果您使用的是 Linux,您可以使用
sed
,例如:
sed -i 1i$(cat columns.csv) data.csv