我的数据在json中有几列,但是我需要将每列转换为Pandas数据框中的多列(因此,每一个新列都是键,并且每一行将是与该行关联的值)。
我创建了此函数:
def convert_json_columns(df):
cat_df = df['category'].apply(json.loads)
cat_df = pd.DataFrame(cat_df.tolist()).add_prefix('category_')
return pd.merge(df, cat_df, left_index=True, right_index=True, how='outer')
它适用于2/5列,但json.loads()向我正在转换的其他对象抛出错误,说它期望一个',':
JSONDecodeError:预期为','分隔符:第1行第30列(字符29)
我想我会尝试将此列手动转换为字典,因为json似乎有效(我将其粘贴到此工具here中,它说这是有效的代码)。我无法在此处粘贴它,因为它具有个人信息。
因此,我尝试通过将“ null”替换为“ None”将其转换为python字典,其他所有内容似乎都应该转换得很好。一旦完成,我可以很容易地将字符串转换成字典。例如:
发件人:
{"id":101531536,"name":null,"is_registered":null,"chosen_currency":null}
收件人:
{"id":101531536,"name":None,"is_registered":None,"chosen_currency":None}
但是,我然后意识到一个值在字符串中带有双引号,并且每个值都使用双引号。即:
test_dict = {"id":1635201695,"name":"John "Cowboy" Smith"} ##fake name
所以我有两个问题:
答案 0 :(得分:0)
不确定是不是JSON问题的原因,但是您可以像这样在熊猫中轻松地用双引号替换双引号:
df["column name"] = df["column name"].str.replace('"', "'")