我有以下数据框称为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()
的更多信息,请访问这里。