python - 仅对 pandas 数据框的给定列中的某些行求和

标签 python python-3.x pandas

我可以对 5 列 pandas 数据框中的前 310 行求和,并使用以下方法获得整洁的摘要:

df.[0:310].sum

有没有一种简单的方法可以让我对我选择的特定列中的前 310 行求和?我只是不知道如何在表达式中组合列选择和行切片选择。最好按列名指定列,但列索引也可以。

为了对第 5 列的前 310 行求和,我尝试了

df.iloc[0:310, 4].sum

但只打印了该列的 310 行。谢谢。

最佳答案

我认为需要DataFrame.iloc按位置选择行 get_indexer按名称列的位置:

#data borrowed from Akshay Nevrekar answer, but changed index values
data = {'x':[1,2,3,4,5], 
        'y':[2,5,7,9,11], 
        'z':[2,6,7,3,4]}
df=pd.DataFrame(data, index=list('abcde'))
print (df)
   x   y  z
a  1   2  2
b  2   5  6
c  3   7  7
d  4   9  3
e  5  11  4

a = df.iloc[:3, df.columns.get_indexer(['x','z'])].sum()

什么是相同的:

a = df.iloc[:3, [0,2]].sum()

print (a)
x     6
z    15
dtype: int64

详细信息:

print (df.iloc[:3, df.columns.get_indexer(['x','z'])])
   x  z
a  1  2
b  2  6
c  3  7

如果只需要一列,请使用 get_loc职位:

b = df.iloc[:3, df.columns.get_loc('x')].sum()

什么是相同的:

b = df.iloc[:3, 0].sum()

print (b)
6

详细信息:

print (df.iloc[:3, df.columns.get_loc('x')])
a    1
b    2
c    3
Name: x, dtype: int64

关于python - 仅对 pandas 数据框的给定列中的某些行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49313924/

相关文章:

Python:无法从 init 文件导入在 setUp 方法中初始化的全局变量

python - 解析器必须是字符串或字符流,而不是系列

python-3.x - 传递变量 python 3 和 html

python - Pandas、fillna/bfill 连接和合并字段

python - Pandas DF : how to replace '-' by '_' with separators (; CSV format)

python - 从特定日期的 pandas DataFrame 中选择行

python - Form.save(commit=False) 在 Django 1.2.3 中表现不同?

python - Django:按从 ModelForm 中排除的字段进行验证

python-3.x - Python中的 "Other element would receive the click"错误

python - 字符串匹配并在 Pandas 中获取多于 1 列