Python 更改满足DataFrame中条件的行上的列值

Python 更改满足DataFrame中条件的行上的列值,python,pandas,dataframe,Python,Pandas,Dataframe,伙计们 我有这样一个df: A B C D E Yes 14 12 123 153 178 0 13 1 435 55 87 0 14 12 123 1 435 0 ...... 15 0 125 66 90 0 比如说,我们有

伙计们

我有这样一个df:

A       B       C        D       E      Yes
14      12     123     153      178       0
13      1      435      55       87       0
14      12     123       1      435       0
......

15      0      125      66       90       0
比如说,我们有两个变量x和y,都是整数。如果满足以下任一条件,我想将“是”列更改为“1”:

    df.D < x and df.E > x
    df.D > x and df.E > y
    df.D > y and df.E > y

Besides, I am sure df.E is always larger than df.D in those raw data.
df.Dx
df.D>x和df.E>y
df.D>y和df.E>y
此外,我确信在这些原始数据中df.E总是大于df.D。

我怎样才能很快做到?我试着写一些基于这个的表达,但都有一些问题。。。非常感谢。

您可以创建一些布尔级数,并将其用作掩码,例如:

x = 10
y = 20

m1 = (df['D'] < x) & (df['E'] > x)
m2 = (df['D'] > x) & (df['E'] > y)
m3 = (df['D'] > y) & (df['E'] > y)

df.loc[m1 | m2 | m3, 'Yes'] = 1
x=10
y=20
m1=(df['D']x)
m2=(df['D']>x)和(df['E']>y)
m3=(df['D']>y)和(df['E']>y)
df.loc[m1 | m2 | m3,‘是’]=1

除了@jpp answer,您还可以使用
np.where

df = pd.DataFrame({'A':[14,13,14,15], 'B':[12,1,12,0], 'D':[153,55,1,66],'E':[178,87,435,90],'Yes':[0,0,0,0]})

x = 100
y = 200

m1 = (df['D'] < x) & (df['E'] > x)
m2 = (df['D'] > x) & (df['E'] > y)
m3 = (df['D'] > y) & (df['E'] > y)


df['Yes'] = np.where(m1|m2|m3, 1, 0)

print(df)

什么是
x
y
?到目前为止,您的尝试遇到了哪些问题?
    A   B    D    E  Yes
0  14  12  153  178    0
1  13   1   55   87    0
2  14  12    1  435    1
3  15   0   66   90    0