我使用python和pandas库。我想根据一个标准从数据框中收集行和列,只从特定列'BikeID'中收集具有'BIKE- \ d \ d \ d \ d'模式的id。我尝试了以下几个版本:
d1 = pandas.dataframe
d2 = d1[d1["BikeID"] == re.compile(r' (BIKE-\d\d\d\d)')]
但我得到一个空的数据框。它是特定的:
d2 = d1[d1["BikeID"] == 'BIKE-0001']
,但我希望匹配前面有BIKE的所有ID。如果你能告诉我一种完成这项任务的方法,我将不胜感激。
答案 0 :(得分:0)
您可以使用str.extract
通过正则表达式模式'(^BIKE-[\d]{4})'
实现此目的,这将查找以BIKE-开头的字符串,然后是4位数字:
In [167]:
s= pd.Series(['BIKE-0001', 'BIKE','BIKE-000','sdBIKE-0001'])
s
Out[167]:
0 BIKE-0001
1 BIKE
2 BIKE-000
3 sdBIKE-0001
dtype: object
In [168]:
s.str.extract(r'(^BIKE-[\d]{4})', expand=False)
Out[168]:
0 BIKE-0001
1 NaN
2 NaN
3 NaN
dtype: object