假设我有一个空的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
如果有助于将来参考,请随时提供进一步阅读。
答案 0 :(得分:3)
简短的回答是,您可能不应该做其中任何一项(请参阅@ EdChum的链接):
m[2][1]
m[2].ix[1]
您通常应该在整个数据框中使用单个ix
,iloc
或loc
命令,只要您想要行和列访问 - 而不是顺序列访问,通过行访问,就像你在这里一样。例如,
m.iloc[1,2]
请注意,与示例相比,1和2相反,因为ix/iloc/loc
都使用行然后列的标准语法。您的语法是相反的,因为您正在进行链接,并且首先从数据框(这是一个系列)中选择一列,然后从该系列中选择一行。
在像你这样的简单案例中,它往往不会太重要,但ix/iloc/loc
的用处在于它们旨在让你“编辑”#34;数据框的复杂方式(也就是设置或赋值)。
这里有ix/iloc/loc
的非常好的解释:
pandas iloc vs ix vs loc explanation?
以及标准的pandas文档: