仅汇总pandas数据帧的给定列中的某些行

时间:2018-03-16 05:45:19

标签: python python-3.x pandas

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

select table_name, 
to_number(extractvalue(xmltype(dbms_xmlgen.getxml('select 
count(*) c from '||owner||'.'||table_name)),'/ROWSET/ROW/C')) as count 
from all_tables

是否有一种简单的方法可以将我选择的某列中的前310行相加?我只是无法弄清楚如何在表达式中组合列选择和行切片选择。按列名指定列是理想的,但列索引也可以。

为了总结第5列的第1 310行,我试了

df.[0:310].sum

但刚从该列打印出310行。谢谢。

2 个答案:

答案 0 :(得分:2)

你需要这样的东西:

import pandas as pd
data = {'x':[1,2,3,4,5], 'y':[2,5,7,9,11], 'z':[2,6,7,3,4]}
df=pd.DataFrame(data)

使用列列表和行:

df.loc[0:310][['x','z']].sum()

输出:

x    15
z    22
dtype: int64

答案 1 :(得分:2)

对于按名称排列的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