Я использую панды для разбора строки на значения столбцов на основе длины символов. Один столбец данных должен быть снова разделен и преобразован во вложенное значение 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