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)
我怎样才能做到这一点?
用于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)