将熊猫数据框列的值拆分/解析为嵌套的json

时间:2019-05-18 20:32:16

标签: python pandas dataframe cassandra

我正在使用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

0 个答案:

没有答案