熊猫中的这段代码不起作用。如果该列包含提供的任何文本/数字,我希望它删除该行目前我只能在单元格与我的代码中传递的确切文本匹配时才能让它工作..因为它只删除说 Fin* 的单元格不是财务或最终...
df2 = df[df.Team != 'Fin*']
Run Code Online (Sandbox Code Playgroud)
WeN*_*Ben 16
您可以使用 startswith
df[~df.Team.str.startswith('Fin')]
Run Code Online (Sandbox Code Playgroud)
或者
df[~df.Team.str.contains('Fin')]
Run Code Online (Sandbox Code Playgroud)
min*_*bro 10
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]
Run Code Online (Sandbox Code Playgroud)
或者按照@RafaelC 的建议
df[~df.C.str.contains("abc")]
Run Code Online (Sandbox Code Playgroud)
输出:
A C
1 2 def
3 4 lmn
Run Code Online (Sandbox Code Playgroud)
您需要正则表达式来执行此操作。这是一个合成数据框:
df = pd.DataFrame({'Team': ['Finance', 'Finally', 'Foo']})
Run Code Online (Sandbox Code Playgroud)
这是一个没有 ( ~) 任何 Fin 的数据框:
df[~df.Team.str.match('Fin*')]
# Team
#2 Foo
Run Code Online (Sandbox Code Playgroud)
如果您确定感兴趣的字符串始终以 Fin 开头,则可以使用“更软”的方法:
df[~df.Team.str.startswith('Fin')]
# Team
#2 Foo
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30510 次 |
| 最近记录: |