Home > other >  pop rows from dataframe based on conditions
pop rows from dataframe based on conditions

Time:12-19

From the dataframe

import pandas as pd
df1 = pd.DataFrame({'A':[1,1,1,1,2,2,2,2],'B':[1,2,3,4,5,6,7,8]})
print(df1)
   A  B
0  1  1
1  1  2
2  1  3
3  1  4
4  2  5
5  2  6
6  2  7
7  2  8

I want to pop 2 rows where 'A' == 2, preferably in a single statement like

df2 = df1.somepopfunction(...)

to generate the following result:

print(df1)
   A  B
0  1  1
1  1  2
2  1  3
3  1  4
4  2  7
5  2  8
print(df2)
    A  B
0  2  5
1  2  6

The pandas pop function sounds promising, but only pops complete colums.

What statement can replace the pseudocode

df2 = df1.somepopfunction(...)

to generate the desired results?

CodePudding user response:

Pop function for remove rows does not exist in pandas, need filter first and then remove filtred rows from df1:

df2 = df1[df1.A.eq(2)].head(2)
print (df2)
   A  B
4  2  5
5  2  6

df1 = df1.drop(df2.index)
print (df1)
   A  B
0  1  1
1  1  2
2  1  3
3  1  4
6  2  7
7  2  8
  • Related