2024-09-30 01:22:14 发布
网友
我想在数据帧中筛选一行。你知道吗
ch=b611067=football
我的问题是我只想过滤b'611067部分。你知道吗
b'611067
我知道我可以用follow str.startswith('b')来找到ID的开头,但是我要找的是一种类似str.contains('random 6 digit numberical value'的方式
str.startswith('b')
str.contains('random 6 digit numberical value'
希望这有意义。你知道吗
我还不确定如何在熊猫中有效地做到这一点,但你可以使用regex进行匹配:
import re pattern = '(b\d{6})' text = 'ch=b611067=football' matches = re.findall(pattern=pattern, string=text) for match in matches: pass # do something
编辑:这个答案解释了如何将regex与pandas一起使用: How to filter rows in pandas by regex
可以使用.str访问器对字符串列使用字符串函数,包括通过regexp进行匹配:
.str
import pandas as pd df = pd.DataFrame(data={"foo": ["us=b611068=handball", "ch=b611067=football", "de=b611069=hockey"]}) print(df.foo.str.match(r'.+=b611067=.+'))
输出:
0 False 1 True 2 False Name: foo, dtype: bool
您可以使用它来索引数据帧,例如:
print(df[df.foo.str.match(r'.+=b611067=.+')])
foo 1 ch=b611067=football
如果希望所有行都与模式b<6 numbers>匹配,可以使用tobias\u k提供的表达式:
b<6 numbers>
df.foo.str.match(r'.+=b[0-9]{6}=.+')
注意,这与df.foo.str.contains(r'=b611067=')给出的结果相同,它不要求您提供通配符,是How to filter rows in pandas by regex中给出的解决方案,但正如Pandas docs中所述,使用match可以更严格。你知道吗
df.foo.str.contains(r'=b611067=')
match
我还不确定如何在熊猫中有效地做到这一点,但你可以使用regex进行匹配:
编辑:这个答案解释了如何将regex与pandas一起使用: How to filter rows in pandas by regex
可以使用
.str
访问器对字符串列使用字符串函数,包括通过regexp进行匹配:输出:
您可以使用它来索引数据帧,例如:
输出:
如果希望所有行都与模式
b<6 numbers>
匹配,可以使用tobias\u k提供的表达式:注意,这与
df.foo.str.contains(r'=b611067=')
给出的结果相同,它不要求您提供通配符,是How to filter rows in pandas by regex中给出的解决方案,但正如Pandas docs中所述,使用match
可以更严格。你知道吗相关问题 更多 >
编程相关推荐