DataFrame:如何根据行的另一个单元格切换单元格值?

ebo*_*osi 4 python dataframe python-3.x pandas

我有参加聚会的朋友名单:

import pandas as pd
d = {'name': ['Alice', 'Bob', 'Charlie'], 'is_here': [True, True, False]}
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)

问题:如何is_here根据给定名称切换布尔值?(例如,如何使toggle('Charlie')转动FalseTrue我的数据帧?)


我可以使用布尔值获得一个状态df[df['name'] == 'Charlie'].iloc[0]['is_here'],但是我很难改变它的值df.

piR*_*red 5

切换Charliexor

df.loc[df.name.eq('Charlie'), 'is_here'] ^= True

df

   is_here     name
0     True    Alice
1     True      Bob
2     True  Charlie
Run Code Online (Sandbox Code Playgroud)

说明

只有一个可以成为True
Truth Tablexor

       x      y  x ^ y
0   True   True  False
1   True  False   True
2  False   True   True
3  False  False  False
Run Code Online (Sandbox Code Playgroud)

所以:
如果x = True,x ^ True评估为False
if x = False,x ^ True评估为True

使用^=loc,我们采取了xorTrue用于切片为代表的所有元素和地方分配的结果.