Dataframe replace不适用于Python中的json

2024-10-02 08:23:00 发布

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

我有一个dataframe final\u data,它包含列['rulelogid','final\u value']

虽然它们最初是字符串类型,但我仍然使用

final_data['rulelogid']=final_data['rulelogid'].astype('str')
final_data['final_value']=final_data['final_value'].astype('str')

行的final\u值列中的数据如下所示:

"{"
"invoice_description"
":"
"{"
"RuleType7"
":"
"{"
"nruleid"
":"
"-1"
","
"taxonomyid"
":"
"-1"
"}"
"}"
"}"

在将dataframe中已经存在的JSON再次转换为最终数据中的JSON时,我使用了额外的双引号。我尝试将列转换为字符串,并用单个"替换""。但替换似乎不起作用。你知道吗

final_data=final_data.replace(to_replace=['""'],value=['"'],regex=True)

结果应该是这样的:

{
"invoice_description": {
    "RuleType7": {
        "nruleid": "-1",
        "taxonomyid": "-1"
                 }
    }
}

但即使在执行之后,我的数据看起来也只和以前一样。 有人能指出我犯了什么错误吗?感谢阅读:)

编辑1: 我有7个数据帧,每个规则类型都有这样的数据:

*rulelogid*       *RuleType3*
872564          {"RuleType7": {"nruleid": "-1","taxonomyid": "-1"}
...              ....

我将所有这些数据帧合并成一个final_data,现在有8列(即rulelogid)和所有规则类型。现在我想将这个数据帧转换为JSON,不包括rulelogid列。所以我使用以下代码:

df_rulelogid = pd.DataFrame(final_data['rulelogid'])
final_data=final_data.drop(['rulelogid'],axis=1)
data_q=[]
for i in final_data.index:
    data=final_data.loc[i].to_json()
    data_q.append(data)
df=pd.DataFrame(data_q)
df.columns=['final_value']
final_data=pd.concat([df_rulelogid,df],axis=1)

我得到了我发布的样本数据。这不是我想要的JSON的样子。你知道吗

编辑2:

在实现了使用apply(ast.literal_eval)的建议之后,所有的数据都被转换成正确的json格式,但是只有一个引用。是有什么办法可以把所有的单引号改成双引号吗?你知道吗


Tags: 数据字符串json类型dataframedfdatavalue

热门问题