我正在使用
df[colname].str.extract(regex)
将一列字符串解析为几列。我希望能够同时分配列名,例如:
df[colname].str.extract(regex, columns=cnames)
其中:
cnames = ['col1','col2','col3']
regex = r'(sometext\w)_(aa|bb)_(\d+-\d)'
它可能与笨重的结构,如:
df[colname].str.extract(regex).rename(columns = dict(zip(range(len(cnames)),cnames)))
或者我可以将列名作为命名组嵌入正则表达式中,这样正则表达式将更改为:
regex = r'(?P<col1>sometext\w)_(?P<col2>aa|bb)_(?P<col3>\d+-\d)'
我是不是漏掉了什么,有没有更简单的办法? 谢谢
将这些名称嵌入正则表达式是一种正确的方法。它声明在documentation中这样做。你知道吗
如果您已经有了一些名为
0
、1
和2
的列,那么使用.rename()
的第一个解决方案就不可靠了。你知道吗在我看来,regex解决方案是最好的,但是您可以开始使用
.pipe()
这样的方法来实现函数。然而,正如您将看到的,当您不想要相同的regex时,它开始变得混乱。你知道吗相关问题 更多 >
编程相关推荐