2017-06-27 4 views
1

度の値が度数記号の列があります。パンダで文字列の非数値または小数点を置き換える方法

42.9377º 
42.9368º 
42.9359º 
42.9259º 
42.9341º 

桁0は度記号

私は正規表現またはstr.replaceを使用してみましたを交換する必要がありますが、私は正確なUnicode文字を把握することはできません。

ソースXLSは、に応じて変化し得るº

エラーがデータフレームを印刷除算記号÷

として示す?

度記号の正確な位置としてそれを示すようにそれを持っています小数点以下を切り捨てるので、正確な文字列の位置を使用して置き換えることはできません。

+0

あなたは 'それが持っているものをユニコード番号をチェックするために' ORD(c)を使用することができます。 –

答えて

2

使用str.replaceextractfloats

df['a'] = df['a'].str.replace('º', '0') 
print (df) 
      a 
0 42.93770 
1 42.93680 
2 42.93590 
3 42.92590 
4 42.93410 

#check hex format of char 
print ("{:02x}".format(ord('º'))) 
ba 

df['a'] = df['a'].str.replace(u'\xba', '0') 
print (df) 
      a 
0 42.93770 
1 42.93680 
2 42.93590 
3 42.92590 
4 42.93410 

ソリューション。

df['a'] = df['a'].str.extract('(\d+\.\d+)', expand=False) + '0' 
print (df) 
      a 
0 42.93770 
1 42.93680 
2 42.93590 
3 42.92590 
4 42.93410 

またはすべての最後の値がºしている場合は、使用可能性indexing with strです:

df['a'] = df['a'].str[:-1] + '0' 
print (df) 
      a 
0 42.93770 
1 42.93680 
2 42.93590 
3 42.92590 
4 42.93410 
1

常に最後の文字であることが分かっている場合は、その文字を削除して「0」を追加することができます。

s = "42.9259º" 

s = s[:-1]+"0" 

print(s) # 42.92590 
関連する問題