如何解决熊猫数据框拆分并获取列表的最后一个元素
我有一个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])
但这在我的最后一列中给了我
number
some
string
25
但是我想得到这个
number
25
13
40
我该怎么做?
解决方法
使用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
可能会在已更改的数据中看到差异:
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
,
可以:
df['number']=df['strings'].apply(lambda row: row.split('_')[-1])
或:
df['number']=[row[-1] for row in df['strings'].str.split('_')]
,
请尝试
df = pd.DataFrame({'strings':['some_string_25','and_a_last_one_40']})
df['number'] = df.strings.apply(lambda x: x.split('_')[-1])
df
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。