Python pandas从csv文件中读取list数据类型中的list

g0czyy6m  于 2023-09-28  发布在  Python
关注(0)|答案(3)|浏览(197)

我有一个csv文件,像这样:

A       B
aaa     [['a1','b1'],['a2','b2']]
bbb     [['a3','b3']]

我试着把这个文件读入Python。我想要列表数据类型的“B”列。
我尝试了pd.read_csv('filename.csv'),我得到的是str类型的"[['a1','b1'],['a2','b2']]",而不是列表类型。
我还试了pd.read_csv('filename.csv', converters={'B':list}),结果是这样的:[[,[',a','1,','B,'...,不是我想要的列表。
你能告诉我如何直接从csv文件中读取列表吗?太感谢了

vngu2lb8

vngu2lb81#

这里的问题是由列 Blist的序列化格式引起的。它存储为列表的字符串表示形式。为了从字符串中恢复python列表,你可以使用eval作为转换器:

df = pd.read_csv(source, converters={'B': eval})
dzjeubhm

dzjeubhm2#

要阅读列表,请尝试此操作

import csv
with open('filename.csv', 'rb') as f:
    reader = csv.reader(f)
    your_list = list(reader)

print your_list
a9wyjsp7

a9wyjsp73#

我使用pandas来轻松地处理文件。如果你可以决定文件中的内容,你也可以选择像这样存储:

A,B
aaa,a1 b1 + a2 b2
bbb,a3 b3

然后,您可以简单地读取文件并使用split函数的功能,它将:

  • 用你选择的分隔符分割你的字符串(默认为白色)
  • 在列表对象中返回结果。

对于第一行的第二列,您可以简单地使用白色作为分隔符运行一次split,然后使用'+'作为分隔符再次运行。
你可以在这里找到更多关于分割的细节https://www.w3schools.com/python/ref_string_split.asp

import pandas

df = pandas.read_csv('my_file.csv')
for row in df.itertuples():
  my_list = row.A.split()

相关问题