这两个Python pandas数据帧命令有什么区别?

时间:2016-04-01 04:08:17

标签: python pandas

假设我有一个空的pandas数据帧。

import pandas as pd
m = pd.DataFrame(index=range(1,100), columns=range(1,100))
m = m.fillna(0)

以下两个命令有什么区别?

m[2][1]
m[2].ix[1] # This code actually allows you to edit the dataframe

如果有助于将来参考,请随时提供进一步阅读。

1 个答案:

答案 0 :(得分:3)

简短的回答是,您可能不应该做其中任何一项(请参阅@ EdChum的链接):

m[2][1]
m[2].ix[1]

您通常应该在整个数据框中使用单个ixilocloc命令,只要您想要行和列访问 - 而不是顺序列访问,通过行访问,就像你在这里一样。例如,

m.iloc[1,2]

请注意,与示例相比,1和2相反,因为ix/iloc/loc都使用行然后列的标准语法。您的语法是相反的,因为您正在进行链接,并且首先从数据框(这是一个系列)中选择一列,然后从该系列中选择一行。

在像你这样的简单案例中,它往往不会太重要,但ix/iloc/loc的用处在于它们旨在让你“编辑”#34;数据框的复杂方式(也就是设置或赋值)。

这里有ix/iloc/loc的非常好的解释:

pandas iloc vs ix vs loc explanation?

以及标准的pandas文档:

http://pandas.pydata.org/pandas-docs/stable/indexing.html