我有一个包含整数的计数器列。基于该整数,我想选择数据框中的连续列之一。
我尝试使用.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]
答案 0 :(得分:0)
您正在要求类似于numpy中的花式索引。在熊猫中,它是lookup
。试试这个:
df2.lookup(df2.index, df2.columns[df2['d']])
Out[86]: array([1, 6, 8])