作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 pandas 进行一些数据清理。想象一下,我有一个数据框,它有一个名为“Number”的列,其中包含如下数据:“1203.10”、“4221”、“3452.11”等。我想在数字前添加一个“M”,它有一个点和最后一个零。对于此示例,它将把“1203.10”变成“M1203.10”。
我知道如何获取包含带点并以零结尾的数字的数据框。
假设数据框名为“df”。
pointzero = '[0-9]+[.][0-9]+[0]$'
pz = df[df.Number.str.match(pointzero)]
但我不确定如何在“pz”之后在开头添加“M”。我知道的唯一方法是使用 for 循环,但我认为有更好的方法。任何建议都会很棒!
最佳答案
您可以使用 boolean indexing :
pointzero = '[0-9]+[.][0-9]+[0]$'
m = df.Number.str.match(pointzero)
df.loc[m, 'Number'] = 'M' + df.loc[m, 'Number']
或者,使用 str.replace
和一个稍微不同的正则表达式:
pointzero = '([0-9]+[.][0-9]+[0]$)'
df['Number'] = df['Number'].str.replace(pointzero, r'M\1', regex=True))
例子:
Number
0 M1203.10
1 4221
2 3452.11
关于python - 使用 Pandas 根据文本条件向列添加字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74343024/
我是一名优秀的程序员,十分优秀!