Pandas 如何根据表中的条件划分值并放置在下一列中

Pandas 如何根据表中的条件划分值并放置在下一列中,pandas,Pandas,上面是我想要输出的数据帧 如果所有成员都是印度,那么在ALLINDIA中输入YEs 如果Members至少包含一个india,则在AtleastoneINDIA中输入YEs 如果成员不包含至少一个印度,则在非印度中输入“是” 布尔掩码的比较依据(==)和聚合依据与函数 ,然后通过每行和最后一行反转any函数创建新列: 如果在all列中,也可以对any的Trues进行小修改: df1 = (df['Region'].eq('India') .groupby(d

上面是我想要输出的数据帧 如果所有成员都是印度,那么在ALLINDIA中输入YEs 如果Members至少包含一个india,则在AtleastoneINDIA中输入YEs 如果成员不包含至少一个印度,则在非印度中输入“是”

布尔掩码的比较依据(
==
)和聚合依据与函数 ,然后通过每行和最后一行反转
any
函数创建新列:

如果在
all
列中,也可以对
any
True
s进行小修改:

df1 = (df['Region'].eq('India')
                   .groupby(df['Q Name'])
                   .agg(['all','any'])
                   .assign(non= lambda x: ~x.any(axis=1),
                           any = lambda x: x['any'] & ~x['all'])
                   .add_suffix('_india'))
print (df1)
          all_india  any_india  non_india
Q Name                                   
INTERNET      False       True      False
RF             True      False      False
TOOLS         False      False       True
最后为
yes
值使用:

布尔掩码的比较依据(
==
)和聚合依据与函数 ,然后通过每行和最后一行反转
any
函数创建新列:

如果在
all
列中,也可以对
any
True
s进行小修改:

df1 = (df['Region'].eq('India')
                   .groupby(df['Q Name'])
                   .agg(['all','any'])
                   .assign(non= lambda x: ~x.any(axis=1),
                           any = lambda x: x['any'] & ~x['all'])
                   .add_suffix('_india'))
print (df1)
          all_india  any_india  non_india
Q Name                                   
INTERNET      False       True      False
RF             True      False      False
TOOLS         False      False       True
最后为
yes
值使用:

df1 = (df['Region'].eq('India')
                   .groupby(df['Q Name'])
                   .agg(['all','any'])
                   .assign(non= lambda x: ~x.any(axis=1),
                           any = lambda x: x['any'] & ~x['all'])
                   .add_suffix('_india'))
print (df1)
          all_india  any_india  non_india
Q Name                                   
INTERNET      False       True      False
RF             True      False      False
TOOLS         False      False       True
df2 = pd.DataFrame(np.where(df1, 'yes', ''), 
                   index=df1.index, 
                   columns=df1.columns)
print (df2)
         all_india any_india non_india
Q Name                                
INTERNET                 yes          
RF             yes                    
TOOLS                              yes