Pandas sum整数由字符串列中的逗号分隔

时间:2015-10-05 11:42:08

标签: python pandas

我有一个pandas数据框,其列为类型字符串,如下所示:

1         1
2       3,1
3         1
4         1
5     2,1,2
6         1
7         1
8         1
9         1
10    4,3,1

我想用逗号分隔所有整数,得到结果:

1         1
2         4
3         1
4         1
5         5
6         1
7         1
8         1
9         1
10        8

到目前为止,我的尝试是:

qty = []
for i in df['Qty']:
    i = i.split(",")
    i = sum(i)
    qty.append(i)
df['Qty'] = qty

虽然,我收到错误:

 TypeError: cannot perform reduce with flexible type

1 个答案:

答案 0 :(得分:2)

在列上使用apply进行df['B'].apply(lambda x: sum(map(int, x.split(','))))

In [81]: df                                                         
Out[81]:                                                            
    A      B                                                        
0   1      1                                                        
1   2    3,1                                                        
2   3      1                                                        
3   4      1                                                        
4   5  2,1,2                                                        
5   6      1                                                        
6   7      1                                                        
7   8      1                                                        
8   9      1                                                        
9  10  4,3,1                                                        

In [82]: df['B'].apply(lambda x: sum(map(int, x.split(','))))       
Out[82]:                                                            
0    1                                                              
1    4                                                              
2    1                                                              
3    1                                                              
4    5                                                              
5    1                                                              
6    1                                                              
7    1                                                              
8    1                                                              
9    8                                                              
Name: B, dtype: int64