Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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.loc中的s`in`-运算符_Python_Pandas_Dataframe - Fatal编程技术网

使用Python';dataframe.loc中的s`in`-运算符

使用Python';dataframe.loc中的s`in`-运算符,python,pandas,dataframe,Python,Pandas,Dataframe,我正在处理一些Pandas数据帧,我不太明白为什么允许一些布尔运算符在.loc-选择器中工作,而其他的则给出了一个错误。准确地说,让我们使用以下数据帧: 将熊猫作为pd导入 df=pd.DataFrame({'A':'foo-bar-foo-bar-foo-bar-foo-foo'.split(), 'B':'one-one-thr-two-two-one-thr'.split()}) 现在,在'two'中的'two'=='two'和'w'都计算为True,但与df.loc[…]一起使用时,以

我正在处理一些Pandas数据帧,我不太明白为什么允许一些布尔运算符在
.loc
-选择器中工作,而其他的则给出了一个错误。准确地说,让我们使用以下数据帧:

将熊猫作为pd导入
df=pd.DataFrame({'A':'foo-bar-foo-bar-foo-bar-foo-foo'.split(),
'B':'one-one-thr-two-two-one-thr'.split()})
现在,在'two'中的
'two'=='two'
'w'都计算为
True
,但与
df.loc[…]
一起使用时,以下工作:

df.loc[df['B']=='two']
打印

         A       B
    2   foo     two
    4   foo     two
    5   bar     two
但是下面会引发一个
KeyError:False
-error

df.loc['w'在df['B']]

我知道解决这个问题的方法,但没有一种感觉特别流畅,更糟糕的是,我根本不明白为什么在
中不允许使用df['B']
-选择器中的
'w'


  • 查看df['B']='two的输出,并将其与df['B']
    中的
    'w'的输出进行比较。第一个将为
    df['B']
    中的每一行输出一个包含True或False的panda系列。第二个将输出
    False

    .loc
    运算符可以采用“与被切片轴长度相同的布尔数组,例如[真、假、真]”(请参阅)。您获得
    KeyError:False
    是因为
    .loc
    试图查找既不是列名称也不是行名称的
    False

    要在df['B']
    -表达式中使用
    w,可以执行以下操作:

    list_true_false=['w'在条目中表示df['B']]`
    df.loc[列表\u正确\u错误]`
    

    希望有帮助

    df['B']中的
    'w'
    只返回一个结果True或False;不关心哪个索引为真或假
    .loc[]
    需要数据帧的索引,但是您没有向其中传递任何索引,因此它会抛出错误。最有可能的情况是您得到了keyrerror。
    df.loc[df['B'].isin(['two'])] # to match the full word specify it as list
    df.loc[df['B'].str.contains('w')] # to match the pattern or a letter