python - 从 Pandas 中的现有 df 创建新的 df - python
问题描述
什么应该是优化的 pandas 命令,以从现有数据帧创建一个新数据帧,该数据帧只有 1 个名为val的列,并进行以下转换。
输入:
1_2_3
1_2_3_4
1_2_3_4_5
输出:
2
2_3
2_3_4
删除直到第一个下划线(包括 _)的所有内容,并删除最后一个 _ 之后的所有内容(包括 _)
解决方案
您可以使用str.replace
匹配字符的正则表达式,包括字符串的第一个_
和最后一个_
到结尾,将这两个部分都替换为空:
df['val'] = df['val'].str.replace('^[^_]*_(.*)_[^_]*$', r'\1')
输出:
val
0 2
1 2_3
2 2_3_4
如果您想要新数据框中的单列,可以使用以下方法将其转换为一列to_frame
:
df2 = df['val'].str.replace('^[^_]*_(.*)_[^_]*$', r'\1').to_frame()
推荐阅读
- sql - 如何替换 Oracle PIVOT IN 子句中的预定义值
- android - 谷歌支持确认未收到有关缺少密钥库 android 的信息
- file - git 裸存储库中的已删除文件
- keycloak - Keycloak 令牌交换 refresh_token requested_token_type 不支持
- python - 使用ffmpeg从两个视频中同时提取帧
- python - 使用请求发布 JSON 数组
- flutter - 在“projectname”中运行“flutter pub get”第 1 行第 1 列错误退出代码 65
- php - ACF 转发器 - 如果子字段在任何行中有值:做某事
- rdf - 如何使用 rdf4j 从 oslc4j 域构建 rdf4j 模型?
- php - 如何从 Yoast Breadcrumbs 中删除 xmlns:v="http://rdf.data-vocabulary.org/#"?