Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python DataFrame:如何基于行的另一个单元格切换单元格值?_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python DataFrame:如何基于行的另一个单元格切换单元格值?

Python DataFrame:如何基于行的另一个单元格切换单元格值?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一份参加聚会的朋友名单: import pandas as pd d = {'name': ['Alice', 'Bob', 'Charlie'], 'is_here': [True, True, False]} df = pd.DataFrame(data=d) 问题:如何切换基于给定名称的是否为布尔值?(例如,如何使切换('Charlie')在我的数据帧中将False转换为True) 我可以使用df[df['name']=='Charlie'].iloc[0]['is_here']]

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

import pandas as pd
d = {'name': ['Alice', 'Bob', 'Charlie'], 'is_here': [True, True, False]}
df = pd.DataFrame(data=d)
问题:如何切换基于给定名称的
是否为布尔值?(例如,如何使
切换('Charlie')
在我的数据帧中将
False
转换为
True



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

中的值。您可以使用
设置索引
+
.loc

df.set_index('name',inplace=True)
df.loc['Alice']
Out[164]: 
is_here    True
Name: Alice, dtype: bool
更新

df.loc[df.name=='Charlie','is_here']=True
df
Out[176]: 
   is_here     name
0     True    Alice
1     True      Bob
2     True  Charlie
更新2

df.loc[df.name=='Charlie','is_here']=~df['is_here']
df
Out[185]: 
   is_here     name
0     True    Alice
1     True      Bob
2     True  Charlie

更新映射

df = df.set_index('name')
df.loc['Charlie', 'is_here'] = ~df.loc['Charlie', 'is_here']

print(df.reset_index())

#       name  is_here
# 0    Alice     True
# 1      Bob     True
# 2  Charlie     True

查询您的映射

df = df.set_index('name')
df.loc['Charlie', 'is_here'] = ~df.loc['Charlie', 'is_here']

print(df.reset_index())

#       name  is_here
# 0    Alice     True
# 1      Bob     True
# 2  Charlie     True
从您的数据帧:

ishere = df.set_index('name')['is_here'].get

print(ishere('Alice'))  # True
从您的原始词典:

ishere = dict(zip(d['name'], d['is_here'])).get

print(ishere('Alice'))  # True
使用异或切换
Charlie

解释 只有一个是正确的
异或的真值表

       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
上的
^=
,我们将
xor
True
用于切片表示的所有元素,并将结果分配到位