我们说我有以下数据框:
idx | X1 | X2 | X3 | Z
-----------------------
1 | 5 | 8 | 4 | 1
2 | 3 | 2 | 6 | 2
3 | 6 | 3 | 2 | 1
对于每一行,我现在想要访问Z
中值所指示的列,即我想要的结果是:
idx | X
--------
1 | 5 # from X1
2 | 2 # from X2
3 | 6 # from X1
我怎样才能在熊猫中实现这一目标?
答案 0 :(得分:2)
使用apply
In [3703]: df.apply(lambda x: x['X%s' % x.Z], axis=1)
Out[3703]:
0 5
1 2
2 6
dtype: int64
In [3706]: df[['idx']].assign(X=df.apply(lambda x: x['X%s' % x.Z], axis=1))
Out[3706]:
idx X
0 1 5
1 2 2
2 3 6
答案 1 :(得分:2)
注意:按照零,当标签订单不正确时,下面不起作用。
df.set_index('idx').apply(lambda x : x[x['Z']-1],axis=1)
Out[959]:
idx
1 5
2 2
3 6
dtype: int64