pop rows from dataframe based on conditions

Question:

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?

Asked By: Oblomov

||

Answers:

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
Answered By: jezrael
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.