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

2024-10-02 10:28:29 发布

您现在位置:Python中文网/ 问答频道 /正文

为了修复dataframe列中的一些值和其他值,我创建了一个字典:

value2fixed= {"lala" : "dada", "howdy": "hoodie"}

我的日期框架df看起来像:

      col_1     col_2
0     lala      500
1     mel       650
2     howdy     750

在第1列中,我想用dada替换lala,用hoodie替换mel,只留下mel。我希望使用df[col_1].map(value2fixed, na_action=None | 'ignore'),但是两个nau操作选项值都用NaN替换mel。你知道吗

在字典中我可以使用value2fixed.get(key, key),我希望在map功能中使用一些等价的东西(不使用lambda),最好使用inplace=True。有什么想法吗?你知道吗


Tags: key框架mapdataframedf字典actioncol
3条回答

map不是一个选项时,总是有replace

df['col_1'] = df['col_1'].replace(value2fixed)
df
    col_1  col_2
0    dada    500
1     mel    650
2  hoodie    750

mapreplace之间的区别在于map用nan替换“无效”键-相反,replace不接触它们。你知道吗

可以使用“替换为嵌套词典”:

df.replace({'col_1':value2fixed}, inplace=True)

>>> df
    col_1  col_2
0    dada    500
1     mel    650
2  hoodie    750

嵌套字典语法如下:

Nested dictionaries, e.g., {‘a’: {‘b’: nan}}, are read as follows: look in column ‘a’ for the value ‘b’ and replace it with nan.

docs

您还可以创建一个新的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

相关问题 更多 >

    热门问题