为了账号安全,请及时绑定邮箱和手机立即绑定

在 Pandas 数据框 .loc 中使用 Python 的“in”运算符

在 Pandas 数据框 .loc 中使用 Python 的“in”运算符

月关宝盒 2023-04-18 14:32:26
我正在使用一些 Pandas 数据帧,但我不太明白为什么允许使用某些布尔运算符并在 -selector 中工作,.loc而其他运算符会出错。准确地说,让我们采用以下数据框:import pandas as pddf = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),                   'B': 'one one two thr two two one thr'.split()})现在两者'two' == 'two'都'w' in 'two'评估为True,但是当与df.loc[...]以下作品一起使用时:df.loc[df['B'] == 'two']打印出来         A       B    2   foo     two    4   foo     two    5   bar     two但以下引发了一个KeyError: False错误。df.loc['w' in df['B']]我知道解决这个问题的方法,但没有一个感觉特别顺利,更糟糕的是我根本不明白为什么 -selector'w' in df['B']不允许在.loc.
查看完整描述

2 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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

运算.loc符可以采用“与被切片的轴长度相同的布尔数组,例如 [True, False, True]”。您获得了KeyError: False因为.loc试图找到False既不是列名也不是行名的。

要使用w in df['B']-expression 你可以这样做:

list_true_false = ['w' in entry for entry in df['B']]`

df.loc[list_true_false]`


查看完整回答
反对 回复 2023-04-18
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您需要 isin 运算符或包含函数

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


查看完整回答
反对 回复 2023-04-18
  • 2 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信