此代码在pandas中不起作用。如果列包含所提供的任何文本/数字,我希望它删除该行。目前,只有当单元格与我的代码中传递的确切文本匹配时,我才能使其工作..因为它仅删除说Fin *的单元格不是财务还是没有...
df2 = df[df.Team != 'Fin*']
答案 0 :(得分:2)
您可以使用startswith
df[~df.Team.str.startswith('Fin')]
或
df[~df.Team.str.contains('Fin')]
答案 1 :(得分:1)
*被解释为regex。因为这不是您想要的,所以可以通过\
df2 = df[df.Team != 'Fin\*']
或者简单地使用
df2 = df[~dfTeam.str.contains('Fin')]
答案 2 :(得分:0)
此操作需要正则表达式。这是一个综合数据框:
df = pd.DataFrame({'Team': ['Finance', 'Finally', 'Foo']})
这里的数据框没有(~
)具有任何Fin:
df[~df.Team.str.match('Fin*')]
# Team
#2 Foo
如果您确定感兴趣的字符串始终以Fin开头,则可以使用“较软”的方法:
df[~df.Team.str.startswith('Fin')]
# Team
#2 Foo
答案 3 :(得分:0)
import pandas as pd
df = pd.DataFrame(dict(A=[1,2,3,4], C=["abc","def","abcdef", "lmn"]))
df:
A C
0 1 abc
1 2 def
2 3 abcdef
3 4 lmn
df[df.C.str.contains("abc") == False]
或@RafaelC建议
df[~df.C.str.contains("abc")]
输出:
A C
1 2 def
3 4 lmn