提问人:yogi 提问时间:11/17/2023 更新时间:11/17/2023 访问量:27
Pandas to_csv编写不带空格的 json 对象
Pandas to_csv write json objects with no spaces
问:
我有一个 dataframe 对象,其中包含一些 dict 类型的列,其中包含一些嵌套的 json 对象。当我使用 to_csv 将数据帧写入 csv 文件时,一切正常,但是 json 对象中有用于格式化的空格,例如:
{'field': 'value', 'field2': 'value2'}
我想写入 csv,但删除多余的空格以保留空间,类似于以下结果:
json.dumps(obj, separators=(':',''))
因此,输出如下所示:
{'field':'value','field2':'value2'}
如何使用 DataFrame 实现此目的?或者以某种方式控制特定 json 列的格式?
答:
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'}
评论
to_csv