Sum Only Certain Rows In A Given Column Of Pandas Dataframe
I can sum the first 310 rows in a 5 column pandas dataframe and get a tidy summary by using:  df.[0:310].sum  Is there an easy way whereby I can sum the first 310 rows in a certain
Solution 1:
I think need DataFrame.iloc for select rows by positions with get_indexer for positions of columns by names:
#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()
What is same as:
a = df.iloc[:3, [0,2]].sum()
print (a)
x     6
z    15
dtype: int64
Detail:
print (df.iloc[:3, df.columns.get_indexer(['x','z'])])
   x  z
a12b26
c  37If want only one column use get_loc for position:
b = df.iloc[:3, df.columns.get_loc('x')].sum()
What is same as:
b = df.iloc[:3, 0].sum()
print (b)
6
Detail:
print (df.iloc[:3, df.columns.get_loc('x')])
a1b2
c    3
Name: x, dtype: int64
Solution 2:
You need something like this:
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)
Use list of columns along with rows:
df.loc[0:310][['x','z']].sum()
output:
x    15
z    22
dtype: int64
Post a Comment for "Sum Only Certain Rows In A Given Column Of Pandas Dataframe"