2024-09-30 01:27:28 发布
网友
例如,我有一个pandas列包含
text A1V2 B2C7Z1
我想把它分成26个(A-Z)列,后面是字母表的值,如果缺少,那么是-1。在
所以,可以
有没有比使用更快捷的方法数据框应用()? 在
随访: 感谢Psidom的精彩回答。当我使用这个方法运行400万行时,我花了1个小时。我希望有另一种方法可以让它更快。看来str.extractall公司()是最耗时的。在
尝试使用regex str.extractall,它将键([A-Z])值([0-9]+)提取到单独的列中,一个长到宽的转换应该可以让您达到目的。在
str.extractall
这里regex(?P<key>[A-Z])(?P<value>[0-9]+)匹配字母数字模式,两个捕获组在结果中以列key和value的两个独立列(使用?P<>语法)
(?P<key>[A-Z])(?P<value>[0-9]+)
?P<>
而且由于extractall将多个匹配项放入单独的行中,因此需要在key列上使用unstack将其转换为宽格式:
key
unstack
(df.text.str.extractall("(?P<key>[A-Z])(?P<value>[0-9]+)") .reset_index('match', drop=True) .set_index('key', append=True) .value.unstack('key').fillna(-1)) #key A B C V Z # 0 1 -1 -1 2 -1 # 1 -1 2 7 -1 1
尝试使用regex
str.extractall
,它将键([A-Z])值([0-9]+)提取到单独的列中,一个长到宽的转换应该可以让您达到目的。在这里regex
(?P<key>[A-Z])(?P<value>[0-9]+)
匹配字母数字模式,两个捕获组在结果中以列key和value的两个独立列(使用?P<>
语法)而且由于extractall将多个匹配项放入单独的行中,因此需要在
key
列上使用unstack
将其转换为宽格式:相关问题 更多 >
编程相关推荐