python - 使用 Array 或 Series 从多列中进行选择

标签 python pandas

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

我尝试使用 .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/

相关文章:

python - 使用 Flask 在另一个页面中显示选定的表单项

python - Python 转换为数组时出现内存错误

Python Pandas 将一列中的 NaN 替换为另一列下面一行的值

api - 如何将 pandas.DataFrame 转换为 gviz_api.DataTable

python - 添加缺失的列

Python 代码可以在 Ubuntu 14.04 中运行,但不能在 Win8.1 中运行

python - 元素树 - 不循环搜索特定元素值

python - 循环 Pandas Dataframe 以生成虚拟变量(1 或 0 输入)的有效方法

python - 使用pandas数据框中的多个行或列值进行计算

python - 如何从powershell激活不同的anaconda环境