首页 > 解决方案 > 从 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

删除直到第一个下划线(包括 _)的所有内容,并删除最后一个 _ 之后的所有内容(包括 _)

标签: pythonpandas

解决方案


您可以使用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()

推荐阅读