熊猫将csv列值作为列表读取

时间:2019-01-24 09:37:02

标签: python pandas csv

我有一个大数据框,其中有6列,每列都有一个列表。当我将数据帧保存到csv并读取csv时,列表将转换为字符串。

我发现了一个最接近我的问题:How to read a column of csv as dtype list using pandas?

但是问题是没有时间将每个字符串转换回列表。将所有字符串转换回列表大约需要4-5个小时。

有一种简单的方法可以将包含列表的数据框保存为可再次在熊猫中轻松访问的格式。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用pickle

例如:

import pandas as pd

df = pd.DataFrame({"Col": [[1,2,3], [4,5,6]]})
df.to_pickle(filename)

#Read the pickle file
df = pd.read_pickle(filename)
print(df["Col"])
print(df["Col"][0][0])

输出:

0    [1, 2, 3]
1    [4, 5, 6]
Name: Col, dtype: object
1

MoreInfo

答案 1 :(得分:0)

要回答您的问题,可以使用literal_eval():

from ast import literal_eval
import pandas as pd
import io

csv = io.StringIO(u'''
id  list
A1  "[1,2]"
A2  "[3,4]"
A3  "[5,6]"
''')
df = pd.read_csv(csv, delim_whitespace = True)

输入DF:

   id   list
0  A1  [1,2]
1  A2  [3,4]
2  A3  [5,6]

# Output is a string
print(type(df.loc[0, 'list']))

# Convert entire column to a list
df.loc[:,'list'] = df.loc[:,'list'].apply(lambda x: literal_eval(x))

# Output is a list
print(type(df.loc[0, 'list']))

####### Convert Column values to List ######
print(df["list"].tolist())
#Output - [[1, 2], [3, 4], [5, 6]]