繁体   English   中英

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

[英]Pandas - Extract a string starting with a particular character

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

我有一个数据框 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)

但输出令人失望: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

有人会帮忙吗? 欣赏它。

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

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})') 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM