亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除熊貓列中字符串中的特定字符

刪除熊貓列中字符串中的特定字符

森欄 2022-10-05 09:23:43
我正在處理一個具有價格列的大型數據集(超過200萬行x 10列)。這些值的格式包括一千點分隔符(例如 1.000),并且還使用點來分隔小數(例如 3.000.75 而不是 3000,75)。我想將列的格式設置為 float,但值中的 2 個點讓我頭疼。通常,為了簡單起見,假設沒有超過1.000.000的數字,我會做這樣的事情for i in range (0,len(df)):    cell=str(df.iloc[i]['price'])    if cell.count(".")==2:        cell=cell.split(".")[0] + cell.split(".")[1] + '.' + cell.split(".")[2]然后,是的,將列的格式設置為浮點數。但我知道這遠非最優(循環)。for我怎樣才能利用熊貓的力量來避免這里?for謝謝!
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

正如米尼奧所建議的那樣,使用正則表達式刪除它們。編碼和閱讀的一種簡單方法是使用,這意味著所有非數字字符:\D

regex = r'\D'
df.price = df.price.str.replace(regex, '').astype(float)


查看完整回答
反對 回復 2022-10-05
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

你可以嘗試這樣的事情:

df.price.str.replace(r'(\.)([0-9]{1,2})$', ',\\2')

也許你將不得不使用正則表達式部分,但這個函數是一種方法。


查看完整回答
反對 回復 2022-10-05
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

在您的情況下,對何時刪除點以及何時應將點視為小數點存在疑問。我對這個問題的解決方案是刪除所有點,然后在一千個點之后出現s,并保持小數點不變。下面的代碼可能會對您有所幫助。


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)

如果您遇到任何其他問題,可以寫信給我。


查看完整回答
反對 回復 2022-10-05
  • 3 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號