我有一个带有字符串列的 python 数据框,我想将其分成更多列。
DF 的某些行如下所示:
COLUMN
ORDP//NAME/iwantthispart/REMI/MORE TEXT
/REMI/SOMEMORETEXT
/ORDP//NAME/iwantthispart/ADDR/SOMEADRESS
/BENM//NAME/iwantthispart/REMI/SOMEMORETEXT
Run Code Online (Sandbox Code Playgroud)
所以基本上我想要“/NAME/”之后到下一个“/”的所有内容。然而。并非每一行都有“/NAME/iwantthispart/”字段,如第二行所示。
我尝试过使用 split 函数,但最终得到了错误的结果。
mt['COLUMN'].apply(lambda x: x.split('/NAME/')[-1])
Run Code Online (Sandbox Code Playgroud)
这只是给了我 /NAME/ 部分之后的所有内容,并且在没有 /NAME/ 的情况下,它返回了完整的字符串给我。
有人有一些提示或解决方案吗?非常感谢帮助!(项目符号是为了使其更具可读性,实际上并不在数据中)。
您可以使用str.extract正则表达式来提取选择的模式:
# Generally, to match all word characters:
df.COLUMN.str.extract('NAME/(\w+)')
Run Code Online (Sandbox Code Playgroud)
或者
# More specifically, to match everything up to the next slash:
df.COLUMN.str.extract('NAME/([^/]*)')
Run Code Online (Sandbox Code Playgroud)
两者都返回:
0 iwantthispart
1 NaN
2 iwantthispart
3 iwantthispart
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3646 次 |
| 最近记录: |