繁体   English   中英

将带有 url 的字符串格式的 DataFrame 正确转换为 JSON

[英]Convert DataFrame with url in string format to JSON properly

我有一个包含 2 列的数据框,其中一列由 URL 组成。

示例代码:

df = pd.DataFrame(columns=('name', 'image'))
df = df.append({'name': 'sample_name', 'image': 'https://images.pexels.com/photos/736230/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500'}, ignore_index=True)
df = df.append({'name': 'sample_name2', 'image': 'https://cdn.theatlantic.com/assets/media/img/mt/2017/10/Pict1_Ursinia_calendulifolia/lead_720_405.jpg?mod=1533691909'}, ignore_index=True)

我想直接将此数据帧转换为 JSON。 我已经使用to_json()方法进行转换,但是当我这样做时,它会弄乱数据框中的 url。

转换为 JSON:

json = df.to_json(orient='records')

当我打印它时,转换会在我的 url 中每个 '/' 字符的开头插入 '\' 字符。

print(json)

结果:

[{"name":"sample_name","image":"https:\/\/images.pexels.com\/photos\/736230\/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"},{"na
me":"sample_name2","image":"https:\/\/cdn.theatlantic.com\/assets\/media\/img\/mt\/2017\/10\/Pict1_Ursinia_calendulifolia\/lead_720_405.jpg?mod=15
33691909"}]

我希望 json 看起来像(在 url 中没有额外的 '\'):

[{"name":"sample_name","image":"https://images.pexels.com/photos/736230/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"},{"na
    me":"sample_name2","image":"https://cdn.theatlantic.com/assets/media/img/mt/2017/10/Pict1_Ursinia_calendulifolia/lead_720_405.jpg?mod=15
    33691909"}]

我还检查了to_json()的文档和其他问题,但找不到处理它的答案。 我怎样才能将我的 url 字符串转换为 json,因为它们在数据框中?

Pandas 在内部使用ujson [PiPy]将数据编码为 JSON blob。 ujson默认使用escape_forward_slashes选项转义斜线。

您可以json.dumps(…)将数据框转换为字典的结果.to_dict

>>> import json
>>> print(json.dumps(df.to_dict('records')))
[{"name": "sample_name", "image": "https://images.pexels.com/photos/736230/pexels-photo-736230.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"}, {"name": "sample_name2", "image": "https://cdn.theatlantic.com/assets/media/img/mt/2017/10/Pict1_Ursinia_calendulifolia/lead_720_405.jpg?mod=1533691909"}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM