以相同开头但以数字结尾的字符串的正则表达式到子集 pandas 数据框
regex expression for strings that start the same but end with number to subset pandas dataframe
可能是一个基本问题,但是,假设我有一个数据框,如下所示:
string_lst = ["bar0001", "bar0002", "bar0003", "bar0003", "bar0004", "bar0004", "bar0005", "bar0006"]
a = pd.DataFrame({'foo': string_lst,
'test':[0,1,2,3,4,5,6,7]})
如何对数据框进行子集化,以便从 3:6 中获取所有“条形”?
我猜的是:
a['foo'== regex 3:6]?
我以为 select string_lst
的最后 n 个数字,但实际数据帧会有不同数量的数字,例如 bar2005
或 bar20005
,所以我不确定如何进行。
非常感谢!
您的正则表达式字符串可以是:“bar[0-9]*”
这将允许:bar1、bar01、bar000000000001 但不允许 bar 1 和 bar001a
IIUC,
a[a['foo'].str.contains('bar0+[3-6]', regex=True)]
输出:
foo test
2 bar0003 2
3 bar0003 3
4 bar0004 4
5 bar0004 5
6 bar0005 6
7 bar0006 7
如果您的数据集具有相同的模式(条形后跟数字),您可以执行如下操作。这将处理 'bar004'、'bar00004' 等情况
a.loc[a.foo.str.extract('(\d+)')[0].astype(float).between(3,6)]
你需要什么?
1.Select 索引 3 到 6?
a.loc[3:6,:]
foo test
3 bar0003 3
4 bar0004 4
5 bar0004 5
6 bar0005 6
或
Select 柱数 3 到 6?
a['s']=a['foo'].str.extract('(\d$)').astype(int)
a[a.s.ge(3)&a.s.le(6)].drop('s',1)
foo test
2 bar0003 2
3 bar0003 3
4 bar0004 4
5 bar0004 5
6 bar0005 6
7 bar0006 7
可能是一个基本问题,但是,假设我有一个数据框,如下所示:
string_lst = ["bar0001", "bar0002", "bar0003", "bar0003", "bar0004", "bar0004", "bar0005", "bar0006"]
a = pd.DataFrame({'foo': string_lst,
'test':[0,1,2,3,4,5,6,7]})
如何对数据框进行子集化,以便从 3:6 中获取所有“条形”?
我猜的是:
a['foo'== regex 3:6]?
我以为 select string_lst
的最后 n 个数字,但实际数据帧会有不同数量的数字,例如 bar2005
或 bar20005
,所以我不确定如何进行。
非常感谢!
您的正则表达式字符串可以是:“bar[0-9]*” 这将允许:bar1、bar01、bar000000000001 但不允许 bar 1 和 bar001a
IIUC,
a[a['foo'].str.contains('bar0+[3-6]', regex=True)]
输出:
foo test
2 bar0003 2
3 bar0003 3
4 bar0004 4
5 bar0004 5
6 bar0005 6
7 bar0006 7
如果您的数据集具有相同的模式(条形后跟数字),您可以执行如下操作。这将处理 'bar004'、'bar00004' 等情况
a.loc[a.foo.str.extract('(\d+)')[0].astype(float).between(3,6)]
你需要什么?
1.Select 索引 3 到 6?
a.loc[3:6,:]
foo test
3 bar0003 3
4 bar0004 4
5 bar0004 5
6 bar0005 6
或
Select 柱数 3 到 6?
a['s']=a['foo'].str.extract('(\d$)').astype(int)
a[a.s.ge(3)&a.s.le(6)].drop('s',1)
foo test
2 bar0003 2
3 bar0003 3
4 bar0004 4
5 bar0004 5
6 bar0005 6
7 bar0006 7