我有一个包含整数的计数器列。基于该整数,我想在我的数据框中选择一个连续的列。
我尝试使用 .apply(lambda x: ..., axis =1) 但我的解决方案需要一个额外的 if 对于我想从中选择的每一列。
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 项、第二行的第 2 项和第三行的第 1 项。所以 df2['e'] = [1,6,8]
最佳答案
您要求的东西类似于 numpy 中的花式索引。在 pandas 中,它是 lookup
。试试这个:
df2.lookup(df2.index, df2.columns[df2['d']])
Out[86]: array([1, 6, 8])
关于python - 使用 Array 或 Series 从多列中进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080020/