使用数组或系列从多个列中选择

时间:2019-07-17 15:58:57

标签: python pandas

我有一个包含整数的计数器列。基于该整数,我想选择数据框中的连续列之一。

我尝试使用.apply(lambda x:...,axis = 1),但是如果要从中选择的每一列,我的解决方案都需要额外的空间。

df2 = pd.DataFrame(np.array([[1, 2, 3, 0 ], [4, 5, 6, 2 ], [7, 8, 9, 1]]),columns=['a', 'b', 'c','d'])
df2['e'] = df.iloc[:,df2['d']]

该代码不起作用,因为iloc在该位置仅需要一个项目,而不是3(df2 ['d'] = [0,2,1])。 我想要做的是给我第一行的第0个项目,第二行的第二个项目和第三行的第一个项目。所以 df2 ['e'] = [1,6,8]

1 个答案:

答案 0 :(得分:0)

您正在要求类似于numpy中的花式索引。在熊猫中,它是lookup。试试这个:

df2.lookup(df2.index, df2.columns[df2['d']])

Out[86]: array([1, 6, 8])