如何在 Python 中使用 "OR" 为列分配新值



我有以下数据框称为Grades:

Name    Grade
0   Ron     100
1   Dana    69
2   Bob     77
3   Dan     32
4   John    99
5   Brita   115

我想创建一个新列(名为"Love"),并在这个新列中分配一个布尔值"true"到一排排的"丹娜";和";John"——因为他们是我爱的两个人。所以结果应该是:

Name    Grade  LOVE
0   Ron    100      False
1   Dana    69      True
2   Bob     77      False
3   Dan     32      False
4   John    99      True
5   Brita   115     False

我试过这个代码,但它没有工作:

Grades['Love'] = Grades.Name == ('Marie' | 'John')

如何使用"Or"作业正确吗?

你可以尝试这样做:

Grades['Love'] = Grades.Name.isin(['Dana', 'John'])

结果如下:

Name    Grade   Love
0   Ron     100     False
1   Dana    69      True
2   Bob     77      False
3   Dan     32      False
4   John    99      True
5   Brita   115     False

您可以使用isin来检查多个值

>>> df.assign(LOVE=df['Name'].isin(['Dana',  'John']))
Name  Grade   LOVE
0    Ron    100  False
1   Dana     69   True
2    Bob     77  False
3    Dan     32  False
4   John     99   True
5  Brita    115  False

如果你想使用OR,你需要用OR组合每个单独值的真实度序列,即|:

>>> df.assign(LOVE=(df['Name']=='Dana')|(df['Name']=='John'))
Name  Grade   LOVE
0    Ron    100  False
1   Dana     69   True
2    Bob     77  False
3    Dan     32  False
4   John     99   True
5  Brita    115  False

你可以试试:

>>> Grades["Love"]=Grades["Name"].str.contains("Dana|John")
>>> Grades
Name  Grade   Love
0    Ron    100  False
1   Dana     69   True
2    Bob     77  False
3    Dan     32  False
4   John     99   True
5  Brita    115  False

正如你所说的Grades是DataFrame。有关str.contains()的更多信息,请访问这里。

相关内容

最新更新