数据框有一列包含以下行:{\'name\': {\'type\': \'STRING\', \'value\': \'test\'}, \'company\': {\ ' 类型\':\'字符串\',\'值\':\'Roga Kopyta LLC\'},\'角色\':{\'类型\':\'字符串\',\'值\' : \'用户\'}}
我试图将每个自定义参数解析为单独的列,获取自定义参数列的名称并用 value 中的值填充它。
我的代码:
temp_table = pd.json_normalize(data.custom)
list_col = [x for x in temp_table.columns if x.split('.')[1] == 'type']
temp_table = temp_table.drop(columns=list_col)
temp_table.columns = [x.split('.')[0] for x in temp_table.columns]
data = data[['col1', 'col2']].join(temp_table)
问题是当pd.json_normalize(data.custom)
我返回一个空表时。我的假设是问题出在单引号中,我尝试替换它们:
data.custom=data.custom.apply(lambda x: x.replace("'", '"'))
data.custom=data.custom.str.replace('"', '\\\"', regex=True)
没有帮助。我尝试匹配这样的行:
data.custom=data.custom.apply(lambda x: json.loads(json.dumps(x)))
也没有帮助。现在我相信我没有正确确定原因。也许整个问题出在我的代码中。
代码中的注释
另一种方法是创建一个字典列表,然后通过一次操作将其转换为框架。我在 810k 线路上测试了它,它在 33 秒内运行。
一行相同(方法链):