2016-07-27 105 views
1

我有以下數據框:熊貓切片

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]。即我想要組合行和列索引,而不是單獨對行和列進行切片。

有什麼想法?

+1

你能解釋一下你是如何得到這個[-1.903218,-1.324411。如果有幫助,添加另一列? – Merlin

回答

4

你可能需要一個lookup method

df1.lookup(["mon", "tue"], ["A", "B"]) 
Out[42]: array([-1.903218, -1.324411]) 
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]] 
+0

在我的具體情況下,我不寫出列的名字,但從其他地方派生出來。我希望有一個更好的方法,甚至沒有for循環。 –

+0

也許有更快的方法做到這一點......只是等待專業人士!我對熊貓還不熟悉...... –