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

dxxyhpgq  于 2023-11-20  发布在  其他
关注(0)|答案(1)|浏览(117)

我有一个带有一些dict类型列的JavaScript对象,其中包含一些嵌套的json对象。当我使用to_csv将JavaScript对象写入csv文件时,一切正常,但是json对象中有用于格式化的空格,例如:
第一个月
我想写csv,但删除多余的空格,以保留空间,类似于结果从:
json.dumps(obj, separators=(':',''))
因此输出如下:
{'field':'value','field2':'value2'}
我怎样才能用一个框架来实现这一点?或者以某种方式控制特定json列的格式?

uelo1irk

uelo1irk1#

如果您想导出数据而不需要额外的空格,您可以将字典转换为字符串,并将':'替换为': '

# 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'}

相关问题