将panda dataframe列的值拆分/解析为嵌套的json

2024-10-01 09:40:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pandas将字符串解析为基于字符长度的列值。dataframe的一列需要再次拆分并转换为嵌套的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')

我应该能够使用每个字符的长度和嵌套值的数量来解析dataframe的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

Tags: csvnoneread字符userspdc2c1