有没有一种方法来保持一个列表内的字典转换成一个字符串,当我写一个csv文件,而使用Pandas库

pqwbnv8z  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(145)

我在将dictir=[]变量写入CSV文件时遇到了一个问题,因此在dictir=[]列表中有两个字典,每个字典都包含一个键为["cities"]的列表,每次我在CSV文件中写入列表dictir=[]时,由于某种原因,键为["cities"]的列表都会转换为CSV文件中的字符串,问题出在我写列表的方式上?还是整个代码上?任何帮助都是很好的
如何写入data.csv文件

,countrey,cities,time_visited
0,france,"['paris', 'lyon']",4
1,germany,"['Munich', 'Frankfurt']",9

我希望data.csv文件看起来像什么样,没有""在法国和德国列表上

,countrey,cities,time_visited
0,france,['paris', 'lyon'],4
1,germany,['Munich', 'Frankfurt'],9

这是我用来写csv文件的代码

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) 
to_csv_file=df.to_csv ("data.csv")
zxlwwiss

zxlwwiss1#

您可以使用df.to_csv()quoting=csv.QUOTE_NONE选项来停用引号。但是您也需要使用escapechar选项来指定要在清单中的,字符之前打印的逸出字符。

import csv

df.to_csv("data.csv", quoting=csv.QUOTE_NONE, escapechar='\\')

生成的CSV文件如下所示:

,countrey,cities,time_visited
0,france,['paris'\, 'lyon'],4
1,germany,['Munich'\, 'Frankfurt'],9

您需要引号或转义符,这样列表中的,就不会被当作字段分隔符。如果您试图打印一个CSV,其中的字段包含逗号,并且您没有启用引号或转义符,您将得到一个错误。

pvcm50d1

pvcm50d12#

当您保存为csv时,它会将任何列表转换为字符串。
要将其转换回列表,您可以执行以下操作:

from ast import literal_eval

df["cities"] = df["cities"].apply(literal_eval)

您可以将其保存为pickle文件(而不是csv),该文件将其存储为列表。

相关问题