首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在pandas中使用下表中的sum函数

如何在pandas中使用下表中的sum函数
EN

Stack Overflow用户
提问于 2021-06-01 17:25:34
回答 3查看 54关注 0票数 1

我正在尝试添加所有行,因此可以看到如下所示,它必须只添加(1)在正常运行时间,(2)在停机时间,(3)在PM

代码语言:javascript
代码运行次数:0
运行
复制
`df = DataFrame({'A' : ['a','b','c','d','e'], 'B' : [1,1,3, 2,1],'C':[1,1,2,3,1],'D':[1,1,1,2,3].'E':[1,2,3,1,1]})
    df

 A B C D E Uptime Downtime P.M
 a 1 1 1 1   4
 b 1 1 1 2   3      2 
 c 3 2 1 3   1      2       6
 d 2 3 2 1   1      4       3
 e 1 1 3 1   3              3
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-01 17:48:59

带有列表理解的选项:

代码语言:javascript
代码运行次数:0
运行
复制
df[['Uptime', 'Downtime', 'P.M.']] = pd.concat(
    [(df.eq(x)*x).sum(1) for x in range(1, 4)], 1)

输出:

代码语言:javascript
代码运行次数:0
运行
复制
   A  B  C  D  E  Uptime  Downtime  P.M.
0  a  1  1  1  1       4         0     0
1  b  1  1  1  2       3         2     0
2  c  3  2  1  3       1         2     6
3  d  2  3  2  1       1         4     3
4  e  1  1  3  1       3         0     3
票数 1
EN

Stack Overflow用户

发布于 2021-06-01 17:36:41

尝试使用wheresum(1)

代码语言:javascript
代码运行次数:0
运行
复制
df = df.set_index('A')
cols = df.columns
df['Uptime'] = df[cols].where(df[cols].eq(1), 0).sum(1)
df['Downtime'] = df[cols].where(df[cols].eq(2), 0).sum(1)
df['P.M'] = df[cols].where(df[cols].eq(3), 0).sum(1)

输出:

代码语言:javascript
代码运行次数:0
运行
复制
  B  C  D  E  Uptime  Downtime  P.M
A                                   
a  1  1  1  1       4         0    0
b  1  1  1  2       3         2    0
c  3  2  1  3       1         2    6
d  2  3  2  1       1         4    3
e  1  1  3  1       3         0    3
票数 2
EN

Stack Overflow用户

发布于 2021-06-01 17:35:11

尝试:

代码语言:javascript
代码运行次数:0
运行
复制
m_1 = df == 1
m_2 = df == 2
m_3 = df == 3

df["Uptime"] = (m_1).sum(axis=1).astype(int)
df["Downtime"] = (m_2 * 2).sum(axis=1).astype(int)
df["P.M"] = (m_3 * 3).sum(axis=1).astype(int)
print(df)

打印:

代码语言:javascript
代码运行次数:0
运行
复制
   A  B  C  D  E  Uptime  Downtime  P.M
0  a  1  1  1  1       4         0    0
1  b  1  1  1  2       3         2    0
2  c  3  2  1  3       1         2    6
3  d  2  3  2  1       1         4    3
4  e  1  1  3  1       3         0    3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67786196

复制
相关文章

相似问题

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