3 回答

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
正如米尼奧所建議的那樣,使用正則表達(dá)式刪除它們。編碼和閱讀的一種簡(jiǎn)單方法是使用,這意味著所有非數(shù)字字符:\D
regex = r'\D' df.price = df.price.str.replace(regex, '').astype(float)

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
你可以嘗試這樣的事情:
df.price.str.replace(r'(\.)([0-9]{1,2})$', ',\\2')
也許你將不得不使用正則表達(dá)式部分,但這個(gè)函數(shù)是一種方法。

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
在您的情況下,對(duì)何時(shí)刪除點(diǎn)以及何時(shí)應(yīng)將點(diǎn)視為小數(shù)點(diǎn)存在疑問(wèn)。我對(duì)這個(gè)問(wèn)題的解決方案是刪除所有點(diǎn),然后在一千個(gè)點(diǎn)之后出現(xiàn)s,并保持小數(shù)點(diǎn)不變。下面的代碼可能會(huì)對(duì)您有所幫助。
cell = df['price']
cell = cell.astype('str')
def func(val):
ret = ''
for i in range(len(val)):
if val[i] != '.' or i%4 != 0:
ret += val[i]
return ret
output = pd.Series(map(func,cell))
output = output.astype('float')
print(output)
如果您遇到任何其他問(wèn)題,可以寫信給我。
添加回答
舉報(bào)