簡體   English   中英

在pandas dataframe上使用.replace()方法時,在字典中重疊鍵

[英]Overlapping keys in dictionary when Using .replace() method on pandas dataframe

我想使用將舊代碼映射到新代碼的字典替換數據框列中的某些值。

di = dict( { "myVar": {11:0, 204:11} } )
mydata.replace( to_replace = di, inplace = True )

但是一些新代碼和舊代碼重疊。 當使用數據幀的.replace方法時,我遇到錯誤'Replacement not allowed with overlapping keys and values'

我目前的解決方法是手動替換替換違規密鑰,然后將字典應用於剩余的非重疊案例。

mydata.loc[ mydata.myVar == 11, "myVar" ] = 0 
di = dict( { "myVar": {204:11} } )
mydata.replace( to_replace = di, inplace = True )

有更緊湊的方法嗎?

我在這里找到了一個答案它將一個系列中的.map方法與字典結合使用。 這是一個具有重疊鍵和值的重新編碼字典的示例。

import pandas as pd
>>> df = pd.DataFrame( [1,2,3,4,1], columns = ['Var'] )
>>> df
   Var
0    1
1    2
2    3
3    4
4    1
>>> dict = {1:2, 2:3, 3:1, 4:3}
>>> df.Var.map( dict )
0    2
1    3
2    1
3    3
4    2
Name: Var, dtype: int64

更新:

使用map,原始系列中的每個值都必須映射到新值。 如果映射字典不包含原始列的所有值,則未映射的值將映射到NaN。

>>> df = pd.DataFrame( [1,2,3,4,1], columns = ['Var'] )
>>> dict = {1:2, 2:3, 3:1}
>>> df.Var.map( dict )
0    2.0
1    3.0
2    1.0
3    NaN
4    2.0
Name: Var, dtype: float64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM