【问题标题】:How can I get a string column that look like a dictionary and get the last item of it?如何获得一个看起来像字典的字符串列并获取它的最后一项?
【发布时间】:2021-03-08 18:21:02
【问题描述】:

我有一个如下所示的数据框:

col_A      col_B
AA         {"0":10,"5":13,"8":20}
BB         {"0":2,"3":34,"5":40,"15":100}
CC         {"2":5,"5":19,"15":200,"20":200,"30":340}

如您所见, col_B 是某种字典。我需要得到其中的最后一个数字。基本上,我需要做到这一点:

col_A      col_B                                        col_C
AA         {"0":10,"5":13,"8":20}                       20
BB         {"0":2,"3":34,"5":40,"15":100}               100
CC         {"2":5,"5":19,"15":200,"20":200,"30":340}    340

由于 col_B 没有固定长度,我试图使用 str.count(',') 来计算项目数,然后使用 str.split(':') 来拆分数字。但这似乎太复杂了。我想知道这里是否有更简单的方法。

【问题讨论】:

  • 我知道。我最初认为它们也是字典。但后来我看到了所有的.str.count.str.split :-)。

标签: python pandas dictionary


【解决方案1】:

试试str.extract:

# all digits between `:` and `}`
# also, for any characters, not necessarily digits
# ':([^:]+)}'
df['col_C'] = df['col_B'].str.extract(':(\d+)}')

输出:

  col_A                                      col_B col_C
0    AA                     {"0":10,"5":13,"8":20}    20
1    BB             {"0":2,"3":34,"5":40,"15":100}   100
2    CC  {"2":5,"5":19,"15":200,"20":200,"30":340}   340

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-25
    • 2011-07-07
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    相关资源
    最近更新 更多