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

问题描述 投票:1回答:1

应该相当简单,但我无法实现。

我有一个数据框df1,其列为“ name_str”。下面的示例:

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

我必须创建另一个包含-say 5个字符-以冒号(:) after开头的列。我编写了以下代码:

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)

但是输出结果令人失望:NaanN

   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

[任何人都可以帮忙吗?赞赏。

python pandas dataframe find slice
1个回答
2
投票

您可以使用str.extract使用以下正则表达式提取冒号之后的所有内容:str.extract

:(.*)

根据您更新的问题进行编辑

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

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

>>> df1                                                                                                
   name_str slize
0    alp:ha    ha
1    bra:vo    vo
2  charl:ie    ie
© www.soinside.com 2019 - 2024. All rights reserved.