python - 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])

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

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

关于python - Pandas 数据框拆分并获取列表的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64463816/

相关文章:

vim - 如何在没有重新映射的情况下仅使用一个命令在 Neovim 的新选项卡中打开终端?

java - 首次安装应用程序时无法解析 android 11 中的 com.android.cam

assembly - 如何将浮点常量移动到 FP 寄存器中?

c - 可能知道变量所在的内存部分?

ios - 从初始化器返回而不初始化所有存储的属性 - SwiftUI 绑定(bind)错误

javascript - Angular 子组件无法识别输入更改

c# - 如何在 ASP Core 的静态类中使用 "IWebHostEnvironment"

javascript - 我怎样才能解构一个 React Prop 并仍然访问其他 Prop ?

haskell - 获取haskell中字符串的所有旋转

r - 匹配和替换字符向量中的单词