首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据不同的列值选择Pandas Dataframe列值

根据不同的列值选择Pandas Dataframe列值
EN

Stack Overflow用户
提问于 2017-02-17 00:52:35
回答 1查看 66关注 0票数 0

尽管我肯定有人会给我一个简单的答案,但我还是把我的头发扯下来了。

代码语言:javascript
运行
复制
data = [{'check': None, 'iterator': 1, 'x1': 1, 'x2': 2, 'x3':3},
         {'check': None,  'iterator': 2, 'x1': 1, 'x2': 2, 'x3':3},
         {'check': None,  'iterator': 3,  'x1': 1,  'x2': 2 , 'x3':3}]
df = pd.DataFrame(data)
display(df)

我正在尝试通过shifting来填充check列,并通过"iterator“列中的值向右移动。也就是说,第一行的“检查”是1,第二行是2,第三行是3。

这是我正在处理的一个大得多的数据集的简化,所以我希望使用向量化的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-17 01:05:20

您可能需要使用numpy高级索引

代码语言:javascript
运行
复制
df['check'] = df.filter(like="x").values[np.arange(len(df)), df.iterator - 1]

为了避免模棱两可,这里有一个不同的例子:

代码语言:javascript
运行
复制
data = [{'check': None, 'iterator': 2, 'x1': 3, 'x2': 4, 'x3':3},
        {'check': None,  'iterator': 1, 'x1': 1, 'x2': 5, 'x3':3},
        {'check': None,  'iterator': 2,  'x1': 2,  'x2': 2 , 'x3':1}]
df = pd.DataFrame(data)

df['check'] = df.filter(like="x").values[np.arange(len(df)), df.iterator-1]
df

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42287489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档