python - Pandas 数据框搜索字符串并返回 False 值

标签 python pandas dataframe

我有一个像这样的数据框

   Index    A
0      1  cat
1      2  dog
2      3  bot
3      4  fly

我想根据 A 列是否包含字母“a OR b OR c”来创建两列

预期结果:

Index| A | yes |   no    |
--------------------------
1    |cat| cat |         |
2    |dog|     |   dog   | 
3    |bot| bot |         |
4    |fly|     |   fly   |

目前我已经

abc = ['a', 'b', 'c']
abc = '|'.join(abc)

df['yes'] = df[df['A'].str.contains(abc)]['A']
df['no'] = df[df['A'].str.contains(abc) == False]['A']

选择 yes 时效果很好,但如果 no 则出现以下错误

ValueError: too many values to unpack (expected 3)

该列已创建,但由于错误, future 的函数(例如 info())似乎因此中断。

这可能是因为对 a、b 和 c 的检查给出了 3 个结果。在这种情况下有没有办法正确返回 False 值?谢谢

最佳答案

这看起来像是 set_indexunstack 的工作:

m = df['A'].str.contains(abc).replace({True: 'yes', False: 'no'})
m
 
0    yes
1     no
2    yes
3     no
Name: A, dtype: object

df.set_index(['Index', m])['A'].unstack(fill_value='')

A       no  yes
Index          
1           cat
2      dog     
3           bot
4      fly     

关于python - Pandas 数据框搜索字符串并返回 False 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62893604/

相关文章:

python - 如何将 df 中的双引号向量转换为 numpy 数组?

python - python 或 pyspark 中的条件语句

python - python中有没有任何方法可以用字符串替换数据框中的nan而不影响空白单元格

python - 如何改进我的 LogConverter?

python - 如何为字母和字母数字密码创建暴力密码破解程序?

python - urlopen 错误 : new-line character seen in unquoted field

python - 创建前 n 个值的数据框的更有效方法 - python

python - 通过与列表比较过滤掉 panda-df 的行

python - 将数据帧年份和月份合并到新对象Python中

python - crypt 在 osx 中不起作用,返回错误值