pandas dataframe 拆分并获取列表的最后一个元素

cor*_*234 2 python split element list pandas

我有一个 pandas 数据框,在一列中我有一个字符串,其中单词以“_”分隔,我想提取该字符串的最后一个元素(这是一个数字)并用它创建一个新列。我尝试了以下方法

df = pd.DataFrame({'strings':['some_string_25','a_different_one_13','and_a_last_one_40']})
df.assign(number = lambda x: x.strings.str.split('_')[0])
Run Code Online (Sandbox Code Playgroud)

但它在我的最后一篇专栏中给了我这个

number
some
string
25
Run Code Online (Sandbox Code Playgroud)

但我想得到这个

number
25
13
40
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

jez*_*ael 8

用于Series.str.split分割并通过索引选择列表的最后一个值或使用Series.str.extract字符串的最后一个整数 -(\d+)用于匹配 int 和$字符串结尾:

df['last'] = df['strings'].str.split('_').str[-1]
df['last1'] = df['strings'].str.extract('(\d+)$')

print (df)
              strings last last1
0      some_string_25   25    25
1  a_different_one_13   13    13
2   and_a_last_one_40   40    40
Run Code Online (Sandbox Code Playgroud)

变化的数据中可能存在差异:

df = pd.DataFrame({'strings':['some_string_25','a_different_one_13','and_a_last_one_40', 
                              'aaaa', 'sss58']})

df['last'] = df['strings'].str.split('_').str[-1]

df['last1'] = df['strings'].str.extract('(\d+)$')

print (df)
              strings   last last1
0      some_string_25     25    25
1  a_different_one_13     13    13
2   and_a_last_one_40     40    40
3                aaaa   aaaa   NaN
4               sss58  sss58    58
Run Code Online (Sandbox Code Playgroud)