python – Pandas过滤数据基于开始时出现的内容

我有一个如下所示的数据框:

df4 = pd.DataFrame({'Q':['chair', 'desk', '-----monitor', 'chair'], 'R':['red', '-- use blue  or dark blue', 'yellow', 'purple'], 'S': ['-- is english spoken?', 'german', 'spanish', 'english']})


              Q                       R                                S
0         chair                     Red            -- is english spoken?
1          desk    -- blue or dark blue                           german
2  -----monitor                  yellow                          spanish
3         chair                  purple                          english

我想要归还的内容:

              Q                       R                                S
3         chair                  purple                          english

如果任何列的“ – ”值在开头出现2次或更多次,我想过滤掉整行.

我找到了一个过滤数值的线程,但有没有办法过滤掉特殊字符?特别是正则表达式?

编辑#1:

如果“ – ”在一开始出现2次或更多次,我只想删除行.如果该值出现在某些文本的中间,那很好.

假设我的数据框看起来像这样:

              Q                       R                                S
0         chair                     Red            -- is english spoken?
1          desk       blue or dark blue                           ger--man
2  -----monitor                  yellow                          spanish
3         chair                  purple                          english

我会回来的:

              Q                       R                                S
1          desk       blue or dark blue                           ger--man
3         chair                  purple                          english

编辑#2:

我试过这个:

df4[~df4.Q.str.startswith(('--'))]

但这仅适用于1列,而不是全部.

最佳答案 将applymap与in和any一起使用

df4[~df4.applymap(lambda x : '--' in x).any(1)]
Out[287]: 
       Q       R        S
3  chair  purple  english

更新仅在开头排除某些内容.

df4[~df4.applymap(lambda x : str.startswith(x,'--')).any(1)]
点赞