我有一份 friend 名单:
import pandas as pd
d = {'name': ['Alice', 'Bob', 'Charlie'], 'is_here': [True, True, False]}
df = pd.DataFrame(data=d)
问题:如何根据给定名称切换 is_here
bool 值? (例如,如何让 toggle('Charlie')
在我的 DataFrame 中将 False
变成 True
?)
我可以使用 df[df['name'] == 'Charlie'].iloc[0]['is_here']
获取一个 bool 值的状态,但我很难更改值在 df
中。
最佳答案
用xor
切换Charlie
df.loc[df.name.eq('Charlie'), 'is_here'] ^= True
df
is_here name
0 True Alice
1 True Bob
2 True Charlie
解释
只有一个可以为真
xor
x y x ^ y
0 True True False
1 True False True
2 False True True
3 False False False
所以:
如果 x = True
,x ^ True
的计算结果为 False
如果 x = False
,x ^ True
的计算结果为 True
在 loc
上使用 ^=
,我们对用 True
表示的所有元素进行 xor
切片并分配结果。
关于python - DataFrame:如何根据行的另一个单元格切换单元格值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49807820/