我们可以在Python中使用列索引组合条件语句吗?

时间:2018-03-16 09:00:58

标签: python pandas numpy

对于以下数据框:

标题:名称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"

我有一个大型数据集,其中包含许多要应用条件的列。

对于多个 & 条件是否有更短的替代方案,其中我不必为每个变量编写条件而是使用组合索引多列的范围?

1 个答案:

答案 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