我有一个像这样的数据框
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_index
和 unstack
的工作:
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/