1

我有一个不由任何字符分隔的文本文件,我想在特定位置拆分它,以便我可以将其转换为“数据框”。下面 file1.txt 中的示例数据:

1JITENDER33
2VIRENDER28
3BIJENDER37

我想拆分文件,使位置 0 到 1 进入第一列,位置 2 到 9 进入第二列,位置 10 到 11 进入第三列,以便我最终可以将其转换为spark dataframe.

4

1 回答 1

2

您可以使用下面的 python 代码读取您的输入文件并使用 csv 编写器对其进行分隔,然后可以将其读入数据帧或将其加载到您的配置单元外部表中。

vikrant> cat inputfile
1JITENDER33
2VIRENDER28
3BIJENDER37

import csv
fname_in = '/u/user/vikrant/inputfile'
fname_out = '/u/user/vikrant/outputfile.csv'
cols = [(0,1), (1,9), (9,11)]
with open(fname_in) as fin, open(fname_out, 'wt') as fout:
    writer = csv.writer(fout, delimiter=",", lineterminator="\n")
    for line in fin:
        line = line.rstrip()  # removing the '\n' and other trailing whitespaces
        data = [line[c[0]:c[1]] for c in cols]
        print("data:",data)
        writer.writerow(data)


vikrant> cat outputfile.csv
1,JITENDER,33
2,VIRENDER,28
3,BIJENDER,37

您还可以将此代码作为某个 python 类的函数,然后将该类进一步导入 pyspark 应用程序代码,并可以将您的纯文本文件转换为某种 csv 文件格式。如果您需要更多帮助,请告诉我。

于 2018-12-27T07:03:23.727 回答