Home > Mobile >  pandas dataframe slicing to a subset from row #y1 to row #y2
pandas dataframe slicing to a subset from row #y1 to row #y2

Time:07-30

I can't see the forest for the trees right now:

I have a Pandas dataframe:

import pandas as pd 
df = pd.DataFrame({'UTCs': [32776, 32777, 32778, 32779, 32780, 32781, 32782, 32783],
                   'Temperature': [5, 7, 7, 9, 12, 9, 9, 4],
                   'Humidity': [50, 50, 48, 47, 46, 47, 48, 52],
                   'pressure': [998, 998, 999, 999, 999, 999, 1000, 1000]})
print(df)
    UTCs  Temperature  Humidity  pressure
0  32776            5        50       998
1  32777            7        50       998
2  32778            7        48       999
3  32779            9        47       999
4  32780           12        46       999
5  32781            9        47       999
6  32782            9        48      1000
7  32783            4        52      1000

Now I want to create a subset of all dataset columns for UTCs between 32778 and 32782

I can chose a subset with:

df_sub=df.iloc[2:7,:]
print(df_sub)
    UTCs  Temperature  Humidity  pressure
2  32778            7        48       999
3  32779            9        47       999
4  32780           12        46       999
5  32781            9        47       999
6  32782            9        48      1000

But how can I do that with the condition like 'chose rows between UTCs=32778 and UTCs=32782'?

Something like

df_sub = df.iloc[df[df.UTCs == 32778] : df[df.UTCs == 32783], : ]

does not work. Any hint for me?

CodePudding user response:

Use between for boolean indexing:

df_sub = df[df['UTCs'].between(32778, 32783, inclusive='left')]

output:

    UTCs  Temperature  Humidity  pressure
2  32778            7        48       999
3  32779            9        47       999
4  32780           12        46       999
5  32781            9        47       999
6  32782            9        48      1000
  • Related