我有一个dataframe final_data,其中的列包含['rulelogid','final_value']
虽然它们原本是字符串类型,但我仍然使用
将它们转换为str
final_data['rulelogid']=final_data['rulelogid'].astype('str')
final_data['final_value']=final_data['final_value'].astype('str')
行的final_value列中的数据如下所示:
"{"
"invoice_description"
":"
"{"
"RuleType7"
":"
"{"
"nruleid"
":"
"-1"
","
"taxonomyid"
":"
"-1"
"}"
"}"
"}"
我在final_data中再次将数据帧中已存在的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格式,但是使用单引号。是否有某种方法可以将所有单引号更改为双引号?