根据id匹配收集行和列

时间:2016-09-21 10:30:48

标签: python pandas dataframe

我使用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。如果你能告诉我一种完成这项任务的方法,我将不胜感激。

1 个答案:

答案 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