对于以下数据框:
标题:名称P1 P2 P3
L1: A 1 0 2
L2: B 1 1 1
L3: C 0 5 6
我想在所有P1,P2和P3都大于0的情况下得到肯定。
目前我正在使用以下任一方法:
方法一:
df['Check']= np.where((df['P1'] > 0) & (df['P2'] > 0) & (df['P3'] > 0),'Yes','No')
方法2:
df.loc[(df['P1'] > 0) & (df['P2'] > 0) & (df['P3'] > 0), 'Check'] = "Yes"
我有一个大型数据集,其中包含许多要应用条件的列。
对于多个 & 条件是否有更短的替代方案,其中我不必为每个变量编写条件而是使用组合索引多列的范围?
答案 0 :(得分:0)
我认为需要DataFrame.all
来检查每行True
:
cols = ['P1','P2','P3']
df['Check']= np.where((df[cols] > 0).all(axis=1),'Yes','No')
print (df)
Name P1 P2 P3 Check
0 A 1 0 2 No
1 B 1 1 1 Yes
2 C 0 5 6 No
print ((df[cols] > 0))
P1 P2 P3
0 True False True
1 True True True
2 False True True
print ((df[cols] > 0).all(axis=1))
0 False
1 True
2 False
dtype: bool