2017-06-01 8 views
1

データフレーム列に浮動小数点数の文字列が含まれていますが、末尾の ".0"を削除します。ただし、df["numbers"].str.replace(".0", "")を実行すると、文字列 "10.0"は "10"に置き換えられる代わりに完全に削除されます。".0"を ""に置き換えたときに "10.0"が完全に削除されました

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 

が、これはバグですか、意図したとおり、それが動作している:これは

MWEなど、数10、100に影響を与えているようですか?また、このアプローチでは「10.1」が「.1」に変更されています。

答えて

8

Dataframe.str.replaceは、正規表現をとり、ひいては.は任意の文字に一致しています。あなたが望む

df.numbers.str.replace("\.0", "") 
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 
関連する問題