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

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

如何用不同的值替換數據框列中的重復字符串

如何用不同的值替換數據框列中的重復字符串

慕的地8271018 2021-12-17 10:18:58
我有這個數據框(樣本):d = {'Col1': [10, 10, 20, 38, 10, 100, 45, 8, 18, 30, 10], 'Col2': [1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0], 'Col3': ['AA', 'BB', 'AA', 'BB', 'BB', 'BB', 'CC', 'AA', 'DD', 'CC', 'BB']}df = pd.DataFrame(data=d)Col3 中的字符串需要替換為一個值,該值在所有行中對于相同的字符串都是一致的。輸出應該看起來像一個帶有 Col3_nw 的數據幀:d_target = {'Col1': [10, 10, 20, 38, 10, 100, 45, 8, 18, 30, 10], 'Col2': [1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0], 'Col3': ['AA', 'BB', 'AA', 'BB', 'BB', 'BB', 'CC', 'AA', 'DD', 'CC', 'BB], 'Col3_nw': [1, 2, 1, 2, 2, 2, 3, 1, 4, 3, 2]}df_target = pd.DataFrame(data=d_target)我嘗試對 Col3 上的數據幀進行排序并循環遍歷它,在 Col3 值相同的情況下添加相同的計數器值,并在出現新的 Col3 值時將計數器值加 1。df_temp = df.sort_values('Col3')String_value = df_temp['Col3'].iloc[0]Counter = 1df_temp.loc[0,'Col3_nw'] = Counterfor index, row in df_temp.iterrows():    if df_temp.iloc[index,'Col3'] == String_value:       df_temp.loc[index,'Col3_nw'] = Counter    if df_temp.iloc[index,'Col3'] != String_value:             Counter = Counter + 1        df_temp.loc[index,'Col3_nw'] = Counter這段代碼提供了我不明白的錯誤:ValueError:基于位置的索引只能有 [整數,整數切片(開始點被包含,結束點被排除),整數列表,布爾數組] 類型有人能幫我讓它在 Python 中工作嗎?
查看完整描述

1 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

您可以通過字典來替換:


d = {'Col1': [10, 10, 20, 38, 10, 100, 45, 8, 18, 30, 10], 

     'Col2': [1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0], 

     'Col3': ['AA', 'BB', 'AA', 'BB', 'BB', 'BB', 'CC', 'AA', 'DD', 'CC', 'BB']}


df = pd.DataFrame(data=d)


df['Col3'] = df.Col3.replace({'AA': 1, 'BB': 2, 'CC': 3, 'DD': 4})

編輯:由于您只是想將字符串映射到整數,只需將列轉換為 acategorical并使用相關代碼:


df['Col3'] = df.Col3.astype('categorical').cat.codes


查看完整回答
反對 回復 2021-12-17
  • 1 回答
  • 0 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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