首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中对数据框中某一行求和

如何在Python中对数据框中某一行求和
EN

Stack Overflow用户
提问于 2015-11-14 03:36:47
回答 2查看 15.1K关注 0票数 3

我有一个数据帧A,我想对这些行求和,它们的行索引值有一个大于或等于10的数字。如果这是不可能的,我也可以接受一个对第2-3行求和的代码。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
A = """
        Tier         Oct   Nov   Dec
    0   up to 2M     4     5     10
    1   5M           3     2     7
    2   10M          6     0     2
    3   15M          1     3     5
   """
tenplus = pd.Series(A(axis=0),index=A.columns[1:])

但这是整个表格的总和。我可以做的一件事是从第2-3行构建另一个数据框架,并对它们求和,但我更喜欢学习最佳实践!

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-14 09:12:45

您可以使用普通切片索引来选择要求和的行:

代码语言:javascript
运行
复制
print(df)
#        Tier  Oct  Nov  Dec
# 0  up to 2M    4    5   10
# 1        5M    3    2    7
# 2       10M    6    0    2
# 3       15M    1    3    5

# select the last two rows
print(df[2:4])
#   Tier  Oct  Nov  Dec
# 2  10M    6    0    2
# 3  15M    1    3    5

# sum over them
print(df[2:4].sum())
# Tier    10M15M
# Oct          7
# Nov          3
# Dec          7
# dtype: object

如您所见,对Tier列求和得到的结果毫无意义,因为" summing“字符串只是将它们连接起来。仅对最后三列求和会更有意义:

代码语言:javascript
运行
复制
# select the last two rows and the last 3 columns
print(df.loc[2:4, ['Oct', 'Nov', 'Dec']])
#    Oct  Nov  Dec
# 2    6    0    2
# 3    1    3    5

# sum over them
print(df.loc[2:4, ['Oct', 'Nov', 'Dec']].sum())
# Oct    7
# Nov    3
# Dec    7
# dtype: int64

# alternatively, use df.iloc[2:4, 1:] to select by column index rather than name

你可以阅读更多关于索引在pandas in the documentation here中的工作原理。

票数 3
EN

Stack Overflow用户

发布于 2015-11-14 04:31:32

sum具有轴参数,请传递axis=1以对各行求和:

代码语言:javascript
运行
复制
In [11]: df
Out[11]:
       Tier  Oct  Nov  Dec
0  up to 2M    4    5   10
1        5M    3    2    7
2       10M    6    0    2
3       15M    1    3    5

In [12]: df.sum(axis=1)
Out[12]:
0    19
1    12
2     8
3     9
dtype: int64

注意:这是丢弃非数字列,您可以在求和之前显式过滤掉这些列:

代码语言:javascript
运行
复制
In [13]: df[['Oct', 'Nov', 'Dec']].sum(axis=1)
Out[13]:
0    19
1    12
2     8
3     9
dtype: int64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33700529

复制
相关文章

相似问题

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