python - Pandas - 提取以特定字符开头的字符串
问题描述
它应该相当简单,但我无法实现它。
我有一个数据框 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})')
推荐阅读
- json - JSON - 按字符串过滤数组
- python - 在循环中取消引用列表时出错
- c# - C# 中的 ACH 模式匹配
- java - 从另一个类中获取 TextView 进行倒计时
- typescript - 如何解决 nuxt 中的这些 cookie 相关警告?
- nativescript - NativeScript Vue:在哪里存储 API 密钥和其他凭据?
- python - 如何使用 pptx python 将 ppt 幻灯片导出为图像
- javascript - 为什么我们要以 express 形式返回状态码和响应?
- node.js - EdgeNgram autocomplete_filter 对前缀搜索有意义吗?
- c++ - c++中变量前面的星号是什么?