Home > database >  select specific rows from a large data frame
select specific rows from a large data frame

Time:09-12

I have a data frame with 790 rows. I want to create a new data frame that excludes rows from 300 to 400 and leave the rest. I tried:

df.loc[[:300, 400:]]
df.iloc[[:300, 400:]]
df_new=df.drop(labels=range([300:400]), 
axis=0)

This does not work. How can I achieve this goal?

Thanks in advance

CodePudding user response:

Use range or numpy.r_ for join indices:

df_new=df.drop(range(300,400)) 
df_new=df.iloc[np.r_[0:300, 400:len(df)]]

Sample:

df = pd.DataFrame({'a':range(20)})  
# print (df)

df1 = df.drop(labels=range(7,15))
print (df1)
     a
0    0
1    1
2    2
3    3
4    4
5    5
6    6
15  15
16  16
17  17
18  18
19  19

df1 = df.iloc[np.r_[0:7, 15:len(df)]]
print (df1)
     a
0    0
1    1
2    2
3    3
4    4
5    5
6    6
15  15
16  16
17  17
18  18
19  19

CodePudding user response:

First select index you want to drop and then create a new df

i = df.iloc[299:400].index
new_df = df.drop(i)
  • Related