Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用字典修复某些列值,而保留其他列值?_Python_Pandas - Fatal编程技术网

Python 如何使用字典修复某些列值,而保留其他列值?

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看起来像:

在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看起来像:

      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行为之上)确实提供了一些新的见解。谢谢大家!!