使用pandas从csv文件中读取元组数据

16

我使用pandas将包含字符串元组的数据框导出为csv文件。结果文件具有以下结构:

index,colA
1,"('a','b')"
2,"('c','d')"

现在我想使用read_csv将其读回来。但是无论我尝试什么,pandas都会将这些值解释为字符串而不是元组。例如:

In []: import pandas as pd
       df = pd.read_csv('test',index_col='index',dtype={'colA':tuple})
       df.loc[1,'colA']
Out[]: "('a','b')"

有没有一种方法可以告诉Pandas做正确的事情?最好不需要对数据框进行繁重的后处理:实际表格有5000行和2500列。

1个回答

25

在一列中存储元组通常不是一个好主意,使用Series和DataFrames的许多优点都会丧失。 话虽如此,您可以使用converters来对字符串进行后处理:

>>> df = pd.read_csv("sillytup.csv", converters={"colA": ast.literal_eval})
>>> df
   index    colA
0      1  (a, b)
1      2  (c, d)

[2 rows x 2 columns]
>>> df.colA.iloc[0]
('a', 'b')
>>> type(df.colA.iloc[0])
<type 'tuple'>

但我可能会从源头上改变事情,以避免在第一时间存储元组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接