我正在尝试选择特定的行和列,但它不允许我使用.iloc
或.loc
,因为我的列名不是整数。
Madrid Boston Tokyo Shanghai Kolkota
2014-01-01 -16 22 49 -24 40
2014-01-02 -49 -7 45 2 -6
2014-01-03 -24 41 -22 -11 0
2014-01-04 -28 -14 -2 20 28
2014-01-05 -49 15 -40 -2 3
有了.ix
我能够做到这一点:
df.ix[1:5, 'Madrid':'Tokyo']
Madrid Boston Tokyo
2014-01-02 -49 -7 45
2014-01-03 -24 41 -22
2014-01-04 -28 -14 -2
2014-01-05 -49 15 -40
现在.ix
已被弃用,还有什么替代方案?
快速简便的方法是:
df.loc[df.index[1:5], "Madrid":"Tokyo"]
因此,例如:
>>> df = pd.DataFrame(np.random.randint(-50,50,(5,5)), index=pd.date_range("2014-01-01", "2014-01-05"), columns=['Madrid', 'Boston', 'Tokyo', 'Shanghai', 'Kolkota'])
>>> df
Madrid Boston Tokyo Shanghai Kolkota
2014-01-01 -16 22 49 -24 40
2014-01-02 -49 -7 45 2 -6
2014-01-03 -24 41 -22 -11 0
2014-01-04 -28 -14 -2 20 28
2014-01-05 -49 15 -40 -2 3
>>> df.loc[df.index[1:5], "Madrid":"Tokyo"]
Madrid Boston Tokyo
2014-01-02 -49 -7 45
2014-01-03 -24 41 -22
2014-01-04 -28 -14 -2
2014-01-05 -49 15 -40
您可以使用相同的方法来选择特定行,因此,如果需要第 0、2 和 4 行(第一、第三和第五行(:
>>> df.loc[df.index[[0, 2, 4]], "Madrid":"Tokyo"]
Madrid Boston Tokyo
2014-01-01 -16 22 49
2014-01-03 -24 41 -22
2014-01-05 -49 15 -40
注意
这不是 Python 2 与Python 3 的事情,而是与pandas
版本有关,基于.ix
的索引在 0.20.2 版本中被弃用pandas