python-pandas中的数据清理

时间:2019-06-24 22:25:49

标签: pandas

我在pandas DataFrame中有一列,内容如下

“percent: 71.3456789%”我如何清理它,使其与读为“70%”的列保持一致

我尝试如下使用replace“ df.str.replace("width:95.612899266253%;", "95.612899266253%").我得到的错误是语法错误

我该如何解决

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式从字符串中获取数字值,然后对此进行四舍五入。

我使用的正则表达式分为三组:

  1. “百分比:”,
  2. 数值
  3. “%”。

.str.replace然后需要传递regex=True参数。

import re

df = pd.DataFrame(["percent: 71.3456789%"],columns=["pct"])

>>> df
                    pct
0  percent: 71.3456789%

repl = lambda m: m.groups(0)[0] + str(round(float(m.groups(0)[1]),0)) + m.groups(0)[2]

simple_decimal = re.compile(r'(percent: )(\d*.\d+)(%)')

>>> df.pct.str.replace(simple_decimal,repl,regex=True)
0    percent: 71.0%