2013-02-27 87 views
2

我嘗試使用選擇鍵選擇在大熊貓數據幀的不同列選擇不同的列在大熊貓數據幀

讓我們說我的數據幀是,

import pandas as pnd 
s1 = pnd.Series ([0,3,6,7]) 
s2 = pnd.Series ([1,4,8,9]) 
s3 = pnd.Series ([2,5,10,11]) 
df = pnd.DataFrame({'A':s1, 'B':s2, 'C':s3}) 

    A B C 
0 0 1 2 
1 3 4 5 
2 6 8 10 
3 7 9 11 

,我的選擇關鍵是,

s4 = pnd.Series (['A','B','C','A']) 


0 A 
1 B 
2 C 
3 A 

我期望的結果是,

0 0 
1 4 
2 10 
3 7 

我想我可以運行一個循環做到這一點

l = [] 
for idx in df.index: 
    l.append(df[s4[idx]][idx]) 
s5 = pnd.Series(l) 
print s5 

是否有更好的/短/更有效的方式?

+0

'df.stack()。ix [zip(s4.index,s4)]'?,但你會得到一個多級索引,不知道是否可以 – herrfz 2013-02-27 22:43:05

回答

5
pnd.Series(df.lookup(df.index, s4), df.index)