Фильтрация столбцов в кадре данных панд - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть кадр данных со следующим столбцом.

  A
 55B
 <lhggkkk>
 66c
 dggfhhjjjj

Мне нужно отфильтровать записи, которые начинаются с номера (например, 55B и 66C) отдельно, а остальные - отдельно.Может кто-нибудь, пожалуйста, помогите?

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Попробуйте проверить, является ли первое число цифрой, а затем индекс Boolen, т.е.

mask =  df['A'].str[0].str.isdigit()
one = df[mask]
two = df[~mask]

print(one,'\n',two)

  A
0  55B
2  66c 
             A
1   <lhggkkk>
3  dggfhhjjjj
0 голосов
/ 12 декабря 2018

Чтобы проверить, является ли первая строка цифрой или нет:

df['A'].str[0].str.isdigit()

Итак:

import pandas as pd

import numpy as np

df:

-----------------
    |          A         
-----------------
 0  |        55B
 1  |  <lhggkkk>
 2  |        66c
 3  | dggfhhjjjj

df['Result'] = np.where(df['A'].str[0].str.isdigit(), 'Numbers', 'Others')

df:

----------------------------
    |          A |    Result
----------------------------
 0  |        55B |   Numbers
 1  |  <lhggkkk> |    Others
 2  |        66c |   Numbers
 3  | dggfhhjjjj |    Others
0 голосов
/ 12 декабря 2018

Попробуйте:

import pandas as pd
df = pd.DataFrame()
df['A'] = ['55B','<lhggkkk>','66c','dggfhhjjjj']
df['B'] = df['A'].apply(lambda x:x[0].isdigit())
print(df)
            A      B
0         55B   True
1   <lhggkkk>  False
2         66c   True
3  dggfhhjjjj  False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...