根据数据帧中第一个下划线后的值创建新列



我有一个数据帧df,我想在其中创建一个新列,其中包含第一个下划线之后的值,如果有两个下划线(基本上保持中间值(,则删除这些值并保留中间值

数据

col1        col2
i_ba        1
i_sapp      1
h_sapp_ii   1
h_sapp_led  1
v_bu        2
v_bu        2

所需

col1         col2       type
i_ba         1          ba
i_sapp       1          sapp
h_sapp_ii    1          sapp
h_sapp_led   1          sapp
v_bu         2          bu
v_bu         2          bu

进行

df['col1'] = df['col1'].str.extract(r'w*?_([^_]*)(?:_)?')

我只是不知道如何用这些值创建一个新列。欢迎任何建议

您可以使用panda字符串split以及panda字符串索引:

>>> df['type'] = df['col1'].str.split('_').str[1]
>>> df
col1  col2  type
0        i_ba     1    ba
1      i_sapp     1  sapp
2   h_sapp_ii     1  sapp
3  h_sapp_led     1  sapp
4        v_bu     2    bu
5        v_bu     2    bu

请参阅文档中的此处。使用[1]进行索引意味着您可以访问第一个下划线之后直到第二个下划线的所有内容。如果没有下划线,则为该行返回NaN

最新更新