在Dataframe中获取字符串对象中的数值之和

时间:2017-06-08 18:36:49

标签: python string split sum

我在dataframe(train_2)中有一个字符串列,如下所示:

  ID  Str_1
  id1  AA: 2, RR: 3,FF: 40
  id2  RR: 6,BB:
  id3  Blank
  id4  GG:20,AA:20

预期输出

ID Sum
id1 45
id2 6
id3 0
id4 40 

我尝试了这样的东西来迭代行,但它把我扔给了Keyerror 5:

w1 = train_2['Str_1']
w1 = w1.str.split(',')

main = []
for i in np.arange(train_2.shape[0]):
    d1 = w1[i]
    nest = []
    nest = [re.sub(pattern = '.*\:', repl=' ', string= d1[k]) for k in list(np.arange(len(d1)))]
    main.append(nest)

我怎样才能做到这一点?有没有更容易的方法呢?

1 个答案:

答案 0 :(得分:0)

如果您使用的是pandas,则可以使用str.extractall获取每行中的所有数字,然后将数字相加:

train_2['sum'] = train_2['Str_1'].str.extractall('([0-9]+)').astype(int).groupby(level=0).sum()

train_2.fillna(0)

#    ID Str_1                sum
#0  id1 AA: 2, RR: 3,FF: 40  45.0
#1  id2 RR: 6,BB:            6.0
#2  id3 Blank                0.0
#3  id4 GG:20,AA:20          40.0