Разбить / разобрать значения столбца данных panda во вложенный json - PullRequest
0 голосов
/ 18 мая 2019

Я использую панды для разбора строки на значения столбцов на основе длины символов. Один столбец данных должен быть снова разделен и преобразован во вложенное значение JSON.

Я вставляю значения в таблицу Cassandra, используя python и pandas, после разбора текстового файла на основе длины символа. Таблица Cassandra имеет столбец UDT (U), который имеет список из 3 полей (скажем, uc1, uc2, uc3). При вставке значений в замороженный столбец я должен указывать значение столбца как вложенный JSON.

Пример -

Raw Data (first row): AbcDefGhijKLmNOP111213212223313233hrydYLKSKSHYH

Insert statement:
    INSERT INTO ABCD (C1, C2, U, C4) values('AbcDef', GhijKLmNOP',[{ uc1 : '11',uc2 : '12',uc3 : '13' },{ uc1 : '21',uc2 : '22',uc3 : '23' },{ uc1 : '31',uc2 : '32',uc3 : '22' }],'hrydYLKSKSHYH')

Я должен иметь возможность анализировать столбец UDT кадра данных, используя длину каждого символа и количество вложенных значений (например: столбец выше U имеет длину (2,2,2) и вложен 3 раза. импорт панд в виде pd длина = [6,10,18,13]

pd.read_fwf(r"C:\Users\codematter\rawdata.txt", header=None, widths=length).to_csv(r"C:\Users\codematter\outdata.csv", header=None, index=None, sep='|', line_terminator='\n')

col_names = ['C1','C2', 'U','c4']

file_read = pd.read_csv(r'C:\Users\codematter\outdata.csv', delimiter='|', header=None,names = col_names, keep_default_na=False)

file_read 

Actual df-
         C1     C2               U                  c4
0   AbcDef  GhijKLmNOP  111213212223313233  hrydYLKSKSHYH
1   AbcD22  GhijKLmNQR  414243515253616263  hrydYLKSKSHPP
2   AbcD33  GhijKLmNST  717273818283919293  hrydYLKSKSHQQ

Expected df-

        C1          C2                                   U             c4
0   AbcDef  GhijKLmNOP  [{ uc1 : '11',uc2 : '12',uc3 : '13' },{ uc1 :..   hrydYLKSKSHYH
1   AbcD22  GhijKLmNQR  [{ uc1 : '41',uc2 : '42',uc3 : '43' },{ uc1 :.. hrydYLKSKSHPP
2   AbcD33  GhijKLmNST  [{ uc1 : '71',uc2 : '72',uc3 : '73' },{ uc1 :.. hrydYLKSKSHQQ
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...