Преобразуйте строковое правило в фрейм данных в python, используя регулярное выражение или сопоставление с образцом - PullRequest
0 голосов
/ 25 апреля 2020

Как мы можем преобразовать следующее строковое правило в структурированный фрейм данных?

Мой ввод - это строка (которая по сути является правилом), ниже приведен пример строки ввода:

КОГДА Рост мужчины (в дюймах) <= 2,30 && Рост женщины (в дюймах)> 1 && Вес мужчины (кг) <= 350 && Вес мужчины (кг) <= 349 ТОГДА Окончательный результат = [[75]] </p>

Результирующий фрейм данных должен выглядеть следующим образом:

Variable                      Sign       Value
Male Height (inches)          <=          2.30
Female Height (inches)         >           1
Male Weight (kgs)             <=          350
Male Weight (kgs)             <=          349
Final Output                   =          75

, где переменная соответствует правилу X1..Xn, знаки и их значения неявны. И последнее значение во фрейме данных - Y, которое является переменной после «THEN» в правиле.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2020

Вы можете сделать regex с pandas:

pattern = pattern = '(?P<Variable>[^A-Z\<\>\=\&]+)\s?(?P<Sign>[\<\>\=]+)\W*(?P<Value>[\d\.]+)'
pd.Series(s).str.extractall(pattern)

Выход:

                         Variable Sign Value
  match                                     
0 0         male height (inches)    <=  2.30
  1       female height (inches)     >     1
  2            male weight (kgs)    <=   350
  3            male weight (kgs)    <=   349
  4                 final output     =    75
0 голосов
/ 25 апреля 2020

IIU C explode делайте несколько split, s ваша строка

df=pd.Series(s).str.split(' THEN ').explode().str.strip('WHEN ').str.split(' && ').explode().str.split(' ',expand=True)
    0   1       2
0  X1  <=    2.30
0  X2   >       1
0  X3  <=     350
0  X3  <=     349
0  X2   >       1
0   Y   =  [[75]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...