首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对pandas中某列中的所有元素求和

对pandas中某列中的所有元素求和
EN

Stack Overflow用户
提问于 2021-10-28 17:48:14
回答 4查看 76关注 0票数 0

我在Python dataframe中的一列中有一个数据。

代码语言:javascript
运行
复制
1-2 3-4 8-9
4-5 6-2
3-1 4-2 1-4

需要对该列中所有可用的数据求和。

我试着应用下面的逻辑,但它不适用于列表列表。

代码语言:javascript
运行
复制
lst=[]
str='5-7 6-1 6-3'
str2 = str.split(' ')
for ele in str2:
    lst.append(ele.split('-'))
print(lst)
sum(lst)

有谁能告诉我最简单的方法吗?

我的预期结果应该是:

代码语言:javascript
运行
复制
27
17
15
EN

回答 4

Stack Overflow用户

发布于 2021-10-28 18:06:18

我想我们可以一分为二

代码语言:javascript
运行
复制
df.col.str.split(' |-').map(lambda x : sum(int(y) for y in x))
Out[149]: 
0    27
1    17
2    15
Name: col, dtype: int64

代码语言:javascript
运行
复制
pd.DataFrame(df.col.str.split(' |-').tolist()).astype(float).sum(1)
Out[156]: 
0    27.0
1    17.0
2    15.0
dtype: float64
票数 3
EN

Stack Overflow用户

发布于 2021-10-28 18:01:25

使用pd.Series.str.extractall

代码语言:javascript
运行
复制
df = pd.DataFrame({"col":['1-2 3-4 8-9', '4-5 6-2', '3-1 4-2 1-4']})

print (df["col"].str.extractall("(\d+)")[0].astype(int).groupby(level=0).sum())

0    27
1    17
2    15
Name: 0, dtype: int32
票数 1
EN

Stack Overflow用户

发布于 2021-10-28 18:02:15

在同一级别上使用.str.extractallsum

代码语言:javascript
运行
复制
df['data'].str.extractall('(\d+)').astype(int).sum(level=0)

输出:

代码语言:javascript
运行
复制
    0
0  27
1  17
2  15
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69758754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档