mask and proper index

Peter Otten __peter__ at web.de
Sun Feb 3 13:18:53 EST 2019


diego.avesani at gmail.com wrote:

> Dear all,
> 
> I am trying to apply a mask to my dataframe:
> 
> mask = (df['datatime'] > start_date) & (df['datatime'] <= end_date)
> df = df.loc[mask]
> 
> 
> It seems to work pretty well.
> 
> After that I crate the cumulative of its element as:
> 
> 
> PP_cumPP = np.cumsum(df[PP_station])
> 
> 
> However, I am not able to compute PP_cumPP last element. Indeed, when I do
> 
>  len(PP_cumPP)
> 
> I get
> 
> 8783
> 
> and when I try to do:
> 
> PP_cumPP[len(PP_cumPP)-1]
> 
> I get an error.

The ultimate problem description ;) You can certainly do better than that. 

Please do always try to make your example self-contained so that a reader 
can run it and see the same error as you do. 

At the very least cut and paste the traceback and the error message you are 
getting.

> What I am doing wrong?

My steps to reproduce what is probably your problem:

>>> df = pd.DataFrame([[1],[2],[3]], columns=["foo"])
>>> odd = df.loc[df["foo"] & 1]
>>> odd
   foo
0    1
2    3

[2 rows x 1 columns]
>>> odd["foo"][1]
Traceback (most recent call last):
[snip]
KeyError: 1

OK, let's try something else:

>>> odd["foo"][2]
3

It looks like you have to use the original indices. But google sure can find 
a way to get rid of these:

>>> odd = odd.reset_index(drop=True)
>>> odd["foo"][1]
3

> Thanks a lot for any kind of help
> 
> Diedro






More information about the Python-list mailing list