создать два кадра данных на основе регулярных выражений - PullRequest
0 голосов
/ 02 июля 2018

Вот небольшой образец кадра данных, который я хотел бы разделить на два отдельных кадра данных.

  No    Code         Name Rem Last Done   LACP     Chg  % Chg Vol ('00)  \
0  1    0012       3A [S]   s     0.940  0.940       -      -        20   
1  2    7054    AASIA [S]   s         -  0.205       -      -         -   
2  3    5238      AAX [S]   s     0.345  0.340   0.005  +1.47    37,806   
3  4  5238WA   AAX-WA [S]   s     0.135  0.135       -      -       590   
4  5    7086  ABLEGRP [S]   s     0.095  0.100  -0.005  -5.00       300   

Я хочу отфильтровать столбец «Код» на основе совпадения или несоответствия следующему регулярному выражению python:

"^[0-9]{1,5}$"

1 Ответ

0 голосов
/ 02 июля 2018

Используйте str.contains с boolean indexing, ~ для инвертирования логической маски:

m = df['Code'].str.contains("^[0-9]{1,5}$")

df1 = df[m]
print (df1)
   No  Code     Name  Rem Last   Done   LACP     Chg  % Chg Vol ('00)
0   1  0012       3A  [S]    s  0.940  0.940       -      -        20
1   2  7054    AASIA  [S]    s      -  0.205       -      -         -
2   3  5238      AAX  [S]    s  0.345  0.340   0.005  +1.47    37,806
4   5  7086  ABLEGRP  [S]    s  0.095  0.100  -0.005  -5.00       300

df2 = df[~m]
print (df2)
   No    Code    Name  Rem Last   Done   LACP Chg % Chg Vol ('00)
3   4  5238WA  AAX-WA  [S]    s  0.135  0.135   -     -       590

Detail

print (m)
0     True
1     True
2     True
3    False
4     True
Name: Code, dtype: bool

print (~m)
0    False
1    False
2    False
3     True
4    False
Name: Code, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...