首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自使用np.select的另一列的数据

来自使用np.select的另一列的数据
EN

Stack Overflow用户
提问于 2019-07-30 09:29:22
回答 1查看 91关注 0票数 1

如何为np.select()中的选择使用df‘column’.str.export()来生成条件列?

代码语言:javascript
复制
df = pd.DataFrame({'column1':['--extract_text--','--extract_text--','--extract_text--','--extract_text--'],'column2':['A','A','B','B']})

conditions = [df['column2'].str.contains('A',case=False,na=False)]
choises = [df['column1'].str.extract('--(.*)--')]

df['new'] = np.select(conditions,choises)

如果我尝试使用代码,我会得到

代码语言:javascript
复制
KeyError: 'new'

但是如果我添加类似的列

代码语言:javascript
复制
df['new'] = 'a' 

然后把它全部使用,我得到了所有列的选择,但没有任何条件:

代码语言:javascript
复制
            column1 column2           new
0  --extract_text--       A  extract_text
1  --extract_text--       A  extract_text
2  --extract_text--       B  extract_text
3  --extract_text--       B  extract_text

但我想

代码语言:javascript
复制
            column1 column2           new
0  --extract_text--       A  extract_text
1  --extract_text--       A  extract_text
2  --extract_text--       B  a
3  --extract_text--       B  a
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 09:50:59

我认为在str.extract()中指定str.extract()参数可能会有所帮助。

代码语言:javascript
复制
conditions = [df['column2'].str.contains('A',case=False,na=False)]
choises = [df['column1'].str.extract('--(.*)--', expand=False)]

df['new'] = np.select(conditions,choises)
代码语言:javascript
复制
    column1 column2 new
0   --extract_text--    A   extract_text
1   --extract_text--    A   extract_text
2   --extract_text--    B   0
3   --extract_text--    B   0

如果您不喜欢np.where中的0值,也可以对df['new']进行同样的处理。

代码语言:javascript
复制
df['new'] = np.where(df['column2'].str.contains('A',case=False,na=False), \
                     df['column1'].str.extract('--(.*)--', expand=False), \
                     '')
代码语言:javascript
复制
    column1 column2 new
0   --extract_text--    A   extract_text
1   --extract_text--    A   extract_text
2   --extract_text--    B   
3   --extract_text--    B   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57268504

复制
相关文章

相似问题

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