2013-02-27 101 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)