【发布时间】:2019-12-03 22:58:26
【问题描述】:
我需要做的是:
df[col].str.split(my_regexp, re.IGNORECASE, expand=True)
但是,pandas DataFrame.str.split 方法无法添加正则表达式标志。
由于我需要扩展结果,所以我不能做类似的事情
df.apply(lambda x: re.split(my_regexp, x[col], flags=re.IGNORECASE), axis=1, result='expand')
因为列表的长度不同。
我需要一种方法来使re.split返回所有相同长度的列表,或者在Series.str.split 方法中传递re.IGNORECASE。或者也许是更好的方法?
谢谢大家!
编辑:这里有一些数据可以更好地解释
series = pd.Series([
'First paRt foo second part FOO third part',
'test1 FoO test2',
'hi1 bar HI2',
'This is a Test',
'first baR second BAr third',
'final'
])
应该返回正则表达式r'foo|bar'
0 1 2
0 First paRt second part third part
1 test1 test2 None
2 hi1 HI2 None
3 This is a Test None None
4 first second third
5 final None None
【问题讨论】:
-
您能否添加一些示例数据,以便我们自己尝试并为您提供答案?
-
是否可以选择将
my_regexp写成小写然后使用:df[col].str.lower().str.split(my_regexp, expand=True) -
我添加了一些示例。这将是一个好主意,但不幸的是,我真的需要输出中的字符串相同
-
上述 Erfran 解决方案也降低了结果的大小写。
标签: python regex pandas split series