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

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

如何在 pandas 中將臟字符串映射到數字

如何在 pandas 中將臟字符串映射到數字

明月笑刀無情 2023-10-06 18:33:21
我正在開發一個 python 項目,并且正在處理 csv 文件中的數據,并且嘗試通過將數據從字符串轉換為浮點值來將用戶數據轉換為可用的數據。這是一列相關的數據F10WhiteWhiteBlackAsian-Pac-IslanderWhiteBlack...這是我正在使用的代碼;trainData = pd.read_csv('train.csv')trainData['F10'].map({' White': 0, ' Black': 1, ' Asian-Pac-Islander': 2, 'white': 0, 'White': 0, 'Black': 1, 'Asian-Pac-Islander': 2,  " White": 0, " Black": 1, " Asian-Pac-Islander": 2, "white": 0, "White": 0, "Black": 1, "Asian-Pac-Islander": 2})不幸的是,盡管如此,當我打印出trainData時,字符串Asian-Pac-Islander、White、Black仍然出現。我一直用這個作為指導,我做錯了什么?
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

最好使用小寫值,因此您不必匹配所有變體。這可以通過 來實現str.lower()。

用于str.strip()刪除前導和尾隨空格

import pandas as pd


# test dataframe

trainData = pd.DataFrame({'F10': ['White ', 'White', 'Black', ' Asian-Pac-Islander', ' White ', ' Black']})


# strip, lower and map

trainData['F10_numeric'] = trainData['F10'].str.strip().str.lower().map({'white': 0, 'black': 1, 'asian-pac-islander': 2})


# display(trainData)

                   F10  F10_numeric

0               White             0

1                White            0

2                Black            1

3   Asian-Pac-Islander            2

4               White             0

5                Black            1

前面的代碼不會修復該F10列,它只是針對映射進行調整。

下面將更新F10,然后將值映射到數字。

# fix F10

trainData['F10'] = trainData['F10'].str.strip().str.lower()


# map on the fixed F10 column

trainData['F10_numeric'] = trainData['F10'].map({'white': 0, 'black': 1, 'asian-pac-islander': 2})


# display(trainData)

                  F10  F10_numeric

0               white            0

1               white            0

2               black            1

3  asian-pac-islander            2

4               white            0

5               black            1


查看完整回答
反對 回復 2023-10-06
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

如果您想更改數據框中的實際列,則必須使用以下命令:

trainData['F10'].replace({' White': 0, ' Black': 1, ' Asian-Pac-Islander': 2, 'white': 0, 'White': 0, 'Black': 1, 'Asian-Pac-Islander': 2,  " White": 0, " Black": 1, " Asian-Pac-Islander": 2, "white": 0, "White": 0, "Black": 1, "Asian-Pac-Islander": 2}, inplace=True)

請注意,我使用了inplace=True

一個不需要的更好的替代方案inplace=True是:

trainData['F10'] = trainData['F10'].str.strip().str.lower().replace({'white': 0, 'black': 1, 'asian-pac-islander': 2})



查看完整回答
反對 回復 2023-10-06
  • 2 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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