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

标签 python pandas dataframe find slice

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

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

关于python - Pandas - 提取以特定字符开头的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59913682/

相关文章:

python - pymc3 生成带有参数数组的随机变量

python - 如何查看 Flask 应用程序是否正在本地主机上运行?

python - 将 Dataframe.describe 输出转换为某些 json

python - Pandas 如何分解不寻常的文本顺序

python - 将 a/b 字符串转换为在 pandas 中 float

r - 提取具有特定条件的数据框行

python - 如何从 Py_CompileString 打印出错误(包括语法)?

python - 没有名为 '_curses' 的模块

python - 根据另一列的多个条件修改一列值

python - 用数据填充 pandas Panel 对象