我在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)
我怎样才能做到这一点?有没有更容易的方法呢?
答案 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