Python 如何使用字典修复某些列值,而保留其他列值?
在pandas中,我需要用一些其他值修复dataframe列中的一些值,我创建了一个字典:Python 如何使用字典修复某些列值,而保留其他列值?,python,pandas,Python,Pandas,在pandas中,我需要用一些其他值修复dataframe列中的一些值,我创建了一个字典: value2fixed= {"lala" : "dada", "howdy": "hoodie"} df.replace({'col_1':value2fixed}, inplace=True) >>> df col_1 col_2 0 dada 500 1 mel 650 2 hoodie 750 我的日期框df看起来像:
value2fixed= {"lala" : "dada", "howdy": "hoodie"}
df.replace({'col_1':value2fixed}, inplace=True)
>>> df
col_1 col_2
0 dada 500
1 mel 650
2 hoodie 750
我的日期框df看起来像:
col_1 col_2
0 lala 500
1 mel 650
2 howdy 750
在Colu_1中,我想用dada
替换lala
,用howdy
替换howdy
连帽衫离开mel
。我希望使用df[col_1].map(value2fixed,na_action=None |“ignore”)
但两个na_action选项值都将mel
替换为NaN
在字典中,我可以使用
value2fixed.get(key,key)
,我希望在map
功能中使用一些相同的东西(不使用lambda),最好使用inplace=True
。有什么想法吗?当map
不是一个选项时,总是有replace
df['col_1'] = df['col_1'].replace(value2fixed)
df
col_1 col_2
0 dada 500
1 mel 650
2 hoodie 750
map
和replace
之间的区别在于map
将“无效”键替换为NAN-相反,replace
不会触及它们。您可以使用嵌套字典替换:
value2fixed= {"lala" : "dada", "howdy": "hoodie"}
df.replace({'col_1':value2fixed}, inplace=True)
>>> df
col_1 col_2
0 dada 500
1 mel 650
2 hoodie 750
嵌套字典语法如下所示:
嵌套字典(例如,{'a':{'b':nan}})的读法如下:在列“a”中查找值“b”,并将其替换为nan
在中,您还可以创建一个新的dictionary类,以在缺少键时传递该键
class SmartDict(dict):
def __missing__(self, key):
return key
df.col_1.map(SmartDict(value2fixed))
#0 dada
#1 mel
#2 hoodie
#Name: col_1, dtype: object
这有意义吗?它返回整个数据帧的副本,即使它只是您正在修改的一列。(请参见编辑),True,无需重新分配或复制,但是带有
inplace=True
的嵌套字典语法仍然有意义(我认为)我喜欢这样answer@cᴏʟᴅsᴘᴇᴇᴅ 谢谢由于bool(np.NaN)==True
,当键不在字典中时,我通常会使用类似这样的东西来返回False,这通常与我在映射列并将其键入bool时想要的行为相反。感谢您的深入了解!很难选择“最佳答案”。最后一个答案(凌驾于dict行为之上)确实提供了一些新的见解。谢谢大家!!