我正在使用pandas根据字符长度将字符串解析为列的值。数据框的一列需要再次拆分,然后转换为嵌套的JSON值。
在根据字符长度解析文本文件之后,我正在使用python和pandas在Cassandra表中插入值。 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