Pandas 使用np.select从另一列获取数据

Pandas 使用np.select从另一列获取数据,pandas,numpy,Pandas,Numpy,如何使用df['column'].str.extract()为np.select()中的选项生成条件列 如果我尝试使用代码,我会 KeyError: 'new' 但是如果我添加列,比如 df['new'] = 'a' 然后全部使用,我得到了所有有选择但没有条件的列: column1 column2 new 0 --extract_text-- A extract_text 1 --extract_text-- A

如何使用df['column'].str.extract()为np.select()中的选项生成条件列

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

KeyError: 'new'
但是如果我添加列,比如

df['new'] = 'a' 
然后全部使用,我得到了所有有选择但没有条件的列:

            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
但我想

            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

我认为在
str.extract()

conditions=[df['column2'].str.contains('A',case=False,na=False)]
choises=[df['column1'].str.extract('--(.*--',expand=False)]
df['new']=np.select(条件、选项)

如果您不喜欢
df['new']
中的
0
值,您可以对
np执行相同的操作

df['new'] = np.where(df['column2'].str.contains('A',case=False,na=False), \
                     df['column1'].str.extract('--(.*)--', expand=False), \
                     '')

我认为在
str.extract()

conditions=[df['column2'].str.contains('A',case=False,na=False)]
choises=[df['column1'].str.extract('--(.*--',expand=False)]
df['new']=np.select(条件、选项)

如果您不喜欢
df['new']
中的
0
值,您可以对
np执行相同的操作

df['new'] = np.where(df['column2'].str.contains('A',case=False,na=False), \
                     df['column1'].str.extract('--(.*)--', expand=False), \
                     '')
df['new'] = np.where(df['column2'].str.contains('A',case=False,na=False), \
                     df['column1'].str.extract('--(.*)--', expand=False), \
                     '')
    column1 column2 new
0   --extract_text--    A   extract_text
1   --extract_text--    A   extract_text
2   --extract_text--    B   
3   --extract_text--    B