如何用Pandas写入CSV时避免字典列表中的子列表转为字符串?
解决Pandas写入CSV时列表字段带双引号的问题
方法1:修改to_csv的引号规则
Pandas默认会对包含特殊字符(比如方括号、单引号)的字段添加双引号,通过设置quoting=csv.QUOTE_NONE可以禁用自动添加引号的行为:
import pandas import csv dictir=[ {"countrey":"france", "cities":["paris","lyon"], "time_visited":4}, {"countrey":"germany", "cities":["Munich","Frankfurt"], "time_visited":9} ] df = pandas.DataFrame(dictir) # 禁用自动添加引号 df.to_csv("data.csv", quoting=csv.QUOTE_NONE)
运行后生成的CSV内容即为期望格式:
,countrey,cities,time_visited 0,france,['paris', 'lyon'],4 1,germany,['Munich', 'Frankfurt'],9
方法2:手动转换字段格式(可选)
如果担心全局禁用引号影响其他字段,可以先将cities列手动转为原始格式的字符串,再配合引号规则写入:
import pandas dictir=[ {"countrey":"france", "cities":["paris","lyon"], "time_visited":4}, {"countrey":"germany", "cities":["Munich","Frankfurt"], "time_visited":9} ] df = pandas.DataFrame(dictir) # 将列表转为原始格式的字符串 df['cities'] = df['cities'].apply(str) # 写入时禁用自动引号 df.to_csv("data.csv", quoting=csv.QUOTE_NONE)
注意事项
如果cities列表中存在逗号、换行符等CSV特殊字符,禁用引号可能导致后续解析错误,这种情况建议保留引号或提前处理字段内容。
内容的提问来源于stack exchange,提问作者Anmar
相关产品推荐
相关产品推荐

