我有一个数据帧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
。