Получить фрейм данных, когда следующая строка числовая - PullRequest
0 голосов
/ 05 июня 2018

У меня есть DataFrame, который выглядит примерно так:

import numpy as np 
import pandas as pd

df=pd.DataFrame([['ph','ro','to'],[5,5,8],[4,3,1],['ph','ro','to'],[np.NaN,np.NaN,np.NaN],
                 [np.NaN,np.NaN,np.NaN],['ph','ro','togr'],[5,5,8],['ph','gho','to'],
                 [np.NaN,np.NaN,np.NaN]],columns=['A','B','C'])

df

     A    B     C
0   ph   ro    to
1    5    5     8
2    4    3     1
3   ph   ro    to
4  NaN  NaN   NaN
5  NaN  NaN   NaN
6   ph   ro  togr
7    5    5     8
8   ph  gho    to
9  NaN  NaN   NaN

Что я хочу сделать, это найти где df.A='ph' и следующий ряд втот же столбец числовой и получить:

    A    B     C
0   ph   ro    to
6   ph   ro  togr

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вот один из способов:

In [64]: mask1 = df['A'] == 'ph'

In [65]: mask2 = df['A'].astype(str).str.isdigit()

In [66]: df[:-1].loc[np.logical_and(mask1[:-1], mask2[1:])]
Out[66]: 
    A   B     C
0  ph  ro    to
6  ph  ro  togr
0 голосов
/ 05 июня 2018

попробуйте это,

print df[(df['A']=='ph')&(pd.to_numeric(df.A,errors='coerce').shift(-1).notnull())]

Вывод:

    A   B     C
0  ph  ro    to
6  ph  ro  togr
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...