【问题标题】:Convert a string rule into a dataframe in python using regex or pattern matching使用正则表达式或模式匹配将字符串规则转换为 python 中的数据框
【发布时间】:2020-04-25 14:06:30
【问题描述】:

我们如何将以下字符串规则转换为结构化数据框?

我的输入是一个字符串(本质上是一个规则),下面是一个输入字符串的例子:

WHEN 男性身高 (英寸) 1 && 男性体重 (Kgs)

生成的数据框应如下所示:

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”之后的变量。

【问题讨论】:

  • 请分享一个具有预期输出的示例数据框。另外,分享您的尝试。
  • 嗨@Mayank,有人建议我在此使用正则表达式,所以正在探索正则表达式,但目前还没有尝试,示例数据框也是问题中提到的结果数据框
  • 据我了解,您提到的问题是您的预期输出。你能粘贴示例输入吗?
  • @MayankPorwal 我已经更新了问题并添加了说明。我的输入基本上是一个字符串,输出是一个数据框。

标签: python regex python-3.x pandas dataframe


【解决方案1】:

您可以使用pandas 执行regex

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

【讨论】:

  • 嗨@Quang,我已经更新了这个问题,因为变量名中有很多空格并且代码被破坏了
  • 查看更新,这适用于小写变量名。
  • 感谢@Quang 的帮助,非常感谢。最后一个问题?如果我有正确的字母大小写,如“男性身高(英寸)”,我应该做些什么改变
  • 用正确的大小写更新了问题。再次光临表示歉意
【解决方案2】:

explode 然后做多个splits 是你的字符串:

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]]

【讨论】:

  • 如果我的 X1 和 X2 变量也是带有空格的字符串,因为当我在我的实际字符串上运行它时,它会被空格破坏。例如,我的实际字符串如下所示: WHEN 男性身高(英寸) 1 && 男性体重(公斤) 1 THEN 最终输出 =[[75]]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多