提取以特定字符开头的字符串

2024-10-02 10:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

这应该是相当简单,但我无法实现它

我有一个数据帧df1,有一列“name_str”。示例如下:

   name_str 
0    alp:ha
1    bra:vo
2  charl:ie

我必须创建另一个列,该列包含-比如说5个字符-在冒号(:)之后开始。我编写了以下代码:

import pandas as pd

data = {'name_str':["alp:ha", "bra:vo", "charl:ie"]}
#indx = ["name_1",]
df1 = pd.DataFrame(data=data)
n= df1['name_str'].str.find(":")+1
df1['slize'] = df1['name_str'].str.slice(n,2)
print(df1)

但产出令人失望:纳安

   name_str  slize
0    alp:ha    NaN
1    bra:vo    NaN
2  charl:ie    NaN

输出应该是:

   name_str  slize
0    alp:ha    ha
1    bra:vo    vo
2  charl:ie    ie

有人能帮忙吗?谢谢


Tags: 数据name示例datananiepddf1
1条回答
网友
1楼 · 发布于 2024-10-02 10:29:00

您可以使用^{}使用以下正则表达式提取冒号后面的所有内容::(.*)

df1['slize'] = df1.name_str.str.extract(':(.*)')                                                  

>>> df1                                                                                                
   name_str slize
0    alp:ha    ha
1    bra:vo    vo
2  charl:ie    ie

根据更新的问题进行编辑

如果要在冒号后提取最多5个字符,则可以使用以下修改:

df['slize'] = df1.name_str.str.extract(':(.{,5})') 

相关问题 更多 >

    热门问题