Pandas按给定的行和列索引切片

时间:2016-07-27 01:26:59

标签: python pandas

我有以下数据框:

df1 = pd.DataFrame(np.random.randn(4,2),columns=["A","B"], index=["mon","tue","wed","thu"])
df1
          A         B
mon -1.903218   0.084362
tue -0.071207   -1.324411
wed -0.866212   -0.311787
thu -0.267956   0.802968

如果我进行以下切片操作,我会得到:

df1.ix[["mon","tue"],["A","B"]]
           A        B
mon -1.903218   0.084362
tue -0.071207   -1.324411

我认为这是有意的,但我希望得到的只是[-1.903218, -1.324411]。即我想要组合行和列索引,而不是分别对行和列进行切片。

有什么想法?

2 个答案:

答案 0 :(得分:4)

您可能需要lookup method

df1.lookup(["mon", "tue"], ["A", "B"])
Out[42]: array([-1.903218, -1.324411])

答案 1 :(得分:1)

而不是:

df1.ix[["mon","tue"],["A","B"]]

尝试:

df1['A']['mon']
df1['B']['tue']

这会给你:

  • 位于A列的值,索引周期
  • 位于B列的值,索引星期二

基于此,您可以创建一个函数来根据需要打印输出。

例如:

def locateDay(df, columns, rows):
    #doSomething
    df1[columns[0]][rows[0]]
    df1[columns[1]][rows[1]]