How to remove a row from pandas dataframe based on the length of the column values?

everestial007 picture everestial007 · Mar 20, 2017 · Viewed 14.9k times · Source

In the following pandas.DataFframe:

df = 
    alfa    beta   ceta
    a,b,c   c,d,e  g,e,h
    a,b     d,e,f  g,h,k
    j,k     c,k,l  f,k,n

How to drop the rows in which the column values for alfa has more than 2 elements? This can be done using the length function, I know but not finding a specific answer.

df = df[['alfa'].str.split(',').map(len) < 3]

Answer

Stephen Rauch picture Stephen Rauch · Mar 20, 2017

You can do that test to each row in turn using pandas.DataFrame.apply()

print(df[df['alfa'].apply(lambda x: len(x.split(',')) < 3)])

Gives:

  alfa   beta   ceta
1  a,b  d,e,f  g,h,k
2  j,k  c,k,l  f,k,n