我有一个包含浮点数字符串的数据帧列,我想删除尾随" .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"用这种方法,这很奇怪。
答案 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