Pandas to_csv编写不带空格的 json 对象

Pandas to_csv write json objects with no spaces

提问人:yogi 提问时间:11/17/2023 更新时间:11/17/2023 访问量:27

问:

我有一个 dataframe 对象,其中包含一些 dict 类型的列,其中包含一些嵌套的 json 对象。当我使用 to_csv 将数据帧写入 csv 文件时,一切正常,但是 json 对象中有用于格式化的空格,例如:

{'field': 'value', 'field2': 'value2'}

我想写入 csv,但删除多余的空格以保留空间,类似于以下结果:

json.dumps(obj, separators=(':',''))

因此,输出如下所示:

{'field':'value','field2':'value2'}

如何使用 DataFrame 实现此目的?或者以某种方式控制特定 json 列的格式?

python json pandas csv

评论

1赞 juanpa.arrivillaga 11/17/2023
那不是 JSON,不会自动发出 JSONto_csv
0赞 Nick 11/17/2023
请使用一些实际示例数据和预期输出来编辑您的问题。

答:

0赞 Corralien 11/17/2023 #1

如果要导出没有额外空格的数据,可以将字典转换为字符串并替换为:': '':'

# or better all extra spaces?
>>> df.assign(A=df['A'].astype(str).str.replace(r'([:,]) ', r'\1', regex=True))

                                      A
0  {'field':'value1','field2':'value2'}
1  {'field':'value3','field2':'value4'}

要导出为 json,可以替换为:.astype(str).map(json.dumps)

# import json
>>> df.assign(A=df['A'].map(json.dumps).str.replace(r'([:,]) ', r'\1', regex=True))

                                      A
0  {"field":"value1","field2":"value2"}
1  {"field":"value3","field2":"value4"}

最小工作示例:

import pandas as pd

obj = [{'field': 'value1', 'field2': 'value2'},
       {'field': 'value3', 'field2': 'value4'}]
df = pd.DataFrame({'A': obj})
print(df)

# Output
                                         A
0  {'field': 'value1', 'field2': 'value2'}
1  {'field': 'value3', 'field2': 'value4'}