【发布时间】:2020-04-07 17:59:11
【问题描述】:
我有一个包含 2 列的数据框,第 3 列是下面给出的输出格式:
DF:
reg value o/p** 2 for $20 11 20/2 4 for $24 12 24/4 2 for $30 13 30/2 Get $10 Cash 14 14 3 for $30 21 30/3首先,我必须在 reg 列中为 [$][\d]+ 匹配 [\d]+,然后 将值列更新为 reg 的第二个整数除以第一个 reg 的整数,如果没有匹配保持相同的值。
我的代码是:
df["value"]=df["reg"].map(lambda x: (int(re.findall("[\d]+",x)[1]))/int(re.findall("[\d]+",x)[0]) if(re.search(r"[\d]+ for [$][\d]+" , x)) else x)
代码输出仅对匹配情况是正确的。
【问题讨论】:
-
问题是什么?
-
从
2 for $20中提取2 and 20以便可以找到20/2。如果可以通过此 val 找到更改值列,否则让值保持原样。