#python-3.x #pyspark
#python-3.x #pyspark
Вопрос:
У меня есть файл с нижеприведенным форматом данных
<aqr>a=769 b="United States" c=02/04/2019 d=01:03:23
<aqr>a=798 b="India" c=02/04/2019 d=01:03:23 e="Non existent"
Таким образом, в основном все строки имеют несколько столбцов, но столбцы не являются фиксированными, и там нет заголовка. Поэтому необходимо создать заголовок столбца из самих данных. Как и в примере выше, a, b, c, d и e будут заголовками столбцов.
Я создал код, который выполняет эту работу, но я ищу более быстрый способ и с возможностью ведения журнала.
Безусловно, моя логика заключается в том, чтобы вначале удалить ненужные данные, затем получить данные в словаре и превратить их в dataframe.
result = defaultdict(list)
with open('testfiles/test.csv', 'r') as file:
pardic = { }
new_list = []
final_list = []
for line in file.read().splitlines():
rule0 = line.strip("<aqr>")
rule0 = '~'.join(shlex.split(rule0))
y = rule0.split('~')
for word in y:
x = word.split('=')
result[x[0]].append(x[1])
data = pd.DataFrame.from_dict(result, orient='index')
data = data.T
Результат прекрасен. Мне просто нужно более быстрое решение для этого.
Комментарии:
1.
rule0 = '~'.join(shlex.split(rule0)); y = rule0.split('~')
на первый взгляд кажется излишним; по какой причине вы делаете это таким образом, а не простоy = shlex.split(rule0)
?2. Да, вы были правы. В этом не было необходимости.