pandas DataFrame bug或功能中的项目类型?

时间:2014-07-14 16:44:21

标签: python pandas

如果我有一个pandas DataFrame

df = read_csv("infile.csv")

其中infile看起来像

i1,i2,f1,f2
3,1,0.1,2.0
2,1,0.3,0.5

即。两列整数和一个浮点数。

如果我使用以下命令查询此DataFrame:

print type(df["i1"].ix[0])

类型是(正如我所料,它也是!)np.int64

然而,如果我使用:

print type(df.ix[0]["i1"])

类型为np.float64

这是正确的行为还是错误?

我想这是因为:

df.ix[0]

创建一个系列对象,[" i1"]然后选择?但这仍然很烦人。

1 个答案:

答案 0 :(得分:3)

正如你自己注意到的那样,这确实是预期的行为,因为在df.ix[0]["i1"]你首先为第一行创建一个系列(所以所有项目都被浮动以获得一个dtype),然后才拿到该项目带有标签"i1"

解决方案很简单:不要使用此链式索引,但在一个索引调用中结合两个查找(行和列):

df.ix[0, "i1"]

还有其他充分的理由可以避免这种链式索引(遇到查看/复制问题):http://pandas.pydata.org/pandas-docs/stable/indexing.html#returning-a-view-versus-a-copy