我有一个如下所示的数据帧
df = pd.DataFrame({'val': ['V583 ,ATTENTION, PRIMARY','Y9207,INDOOR LIVING, sEcondary',' z526, liver,primary ','12345678, test, secondary',',project,']})
我想基于comma
字符分割/隔离列val
数据
例如,所有字符before 1st comma
都应该转到first
列
同样,所有字符after 1st comma
和before 2nd comma
都应该转到second
列
同样,所有字符after 2nd comma
和before 3rd comma
都应该转到third
列
我试过下面的方法
df['val'].astype(str).str.extract(r'\s*([a-zA-Z0-9\s]*)',expand=True)
我希望我的输出如下所示
您可以在此处使用
str.extract
,如下所示:有了您展示的样品,请尝试以下内容。在这里使用Pandas的^{} 函数。简单的解释是:在extract中提到regex以在DataFrame中创建3个新列。它基本上是根据显示的示例为每个新字段创建3个捕获组
Here is online demo of above regex
df的输出如下所示:
Series.str.extractall
我们可以
extract
将所有出现的捕获组指定为regex模式,然后unstack
进行重塑正则表达式详细信息:
([^,]+)
:第一捕获组[^,]+
:匹配列表中不存在的任何字符[,]
一次或多次李>(?:\s*,\s*|$)
:非捕获组\s*,\s*
:第一种选择\s*
:匹配任何空白字符零次或多次,
:按字面意思匹配字符逗号\s*
:匹配任何空白字符零次或多次$
:第二个备选方案断言行末尾的位置PS:如果您有任意数量的逗号分隔字符串,此方法也可以使用。
相关问题 更多 >
编程相关推荐