" 10.0"在更换" .0"时完全删除用""

时间:2017-06-01 12:43:06

标签: python pandas

我有一个包含浮点数字符串的数据帧列,我想删除尾随" .0"适用的地方。但是,在执行df["numbers"].str.replace(".0", "")时,字符串" 10.0"被完全删除,而不是被" 10"替换。这似乎只影响数字10,100等。

MWE:

import pandas as pd
df = pd.DataFrame({"numbers": ["1.0", "10.0", "10.1", "100.0", "100.1", "99.0"]})
print df
#   numbers
# 0     1.0
# 1    10.0
# 2    10.1
# 3   100.0
# 4   100.1
# 5    99.0
print df.numbers.str.replace(".0", "")
# 0      1
# 1
# 2     .1
# 3      0
# 4    0.1
# 5     99

这是一个错误还是按预期工作?还要注意" 10.1"改为" .1"用这种方法,这很奇怪。

2 个答案:

答案 0 :(得分:8)

Dataframe.str.replace采用正则表达式,因此.匹配任何字符。你想要

df.numbers.str.replace("\.0", "")

答案 1 :(得分:5)

$的匹配结束需要string.需要\转义:

print (df.numbers.str.replace("\.0$", ""))
0        1
1       10
2     10.1
3      100
4    100.1
5       99
Name: numbers, dtype: object