Pandaspd.更换和TypeE

2024-04-29 00:55:52 发布

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

我有all_data数据帧。我想用数值替换某些列中的一些分类值。我正在尝试使用这个嵌套的字典表示法(我已经检查了括号和花括号是否正确,我不认为这是问题所在):

all_data = all_data.replace({'Street': {'Pave': 1, 'Grvl': 0}},
                            {'LotShape': {'IR3': 1, 'IR2': 2, 'IR1': 3, 'Reg': 4}},
                            {'Utilities': {'ELO': 0, 'NoSeWa': 0, 'NoSewr': 0, 'AllPub': 1}},
                            {'LandSlope': {'Sev': 1, 'Mod': 2, 'Gtl': 3}},
                            {'ExterQual': {'Po': 1, 'Fa': 2, 'TA': 3, 'Gd': 4, 'Ex': 5}},
                            {'ExterCond': {'Po': 1, 'Fa': 2, 'TA': 3, 'Gd': 4, 'Ex': 5}},
                            {'BsmtQual': {'NA': 0, 'Po': 1, 'Fa': 2, 'TA': 3, 'Gd': 4,'Ex': 5}},
                            {'BsmtCond': {'NA': 0, 'Po': 1, 'Fa': 2, 'TA': 3, 'Gd': 4,'Ex': 5}},
                            {'BsmtExposure': {'NA': 0, 'No': 1, 'Mn': 2, 'Av': 3, 'Gd': 4}},
                            {'BsmtFinType1': {'NA': 0, 'Unf': 1, 'LwQ': 2, 'Rec': 3, 'BLQ': 4, 'ALQ': 5, 'GLQ': 6}},
                            {'BsmtFinType2': {'NA': 0, 'Unf': 1,'LwQ': 2,'Rec': 3, 'BLQ': 4,'ALQ': 5, 'GLQ': 6}}, 
                            {'HeatingQC': {'Po': 1,'Fa': 2,'TA': 3,'Gd': 4,'Ex': 5}},
                            {'CentralAir': {'No': 0,'Yes': 1}},
                            {'KitchenQual': {'Po': 1,'Fa': 2,'TA': 3,'Gd': 4,'Ex': 5}},
                            {'Functional': {'Sal': -7,'Sev': -6,'Maj1': -5,'Maj2': -4,'Mod': -3,'Min2': -2,'Min1': -1,
                                            'Typ': 0}},
                            {'FireplaceQu': {'NA': 0,'Po': 1,'Fa': 2,'TA': 3,'Gd': 4,'Ex': 5}},
                            {'GarageFinish': {'NA': 0,'Unf': 1,'RFn': 2, 'Fin': 3}},
                            {'GarageQual': {'NA': 0,  'Po': 1,'Fa': 2, 'TA': 3,'Gd': 4, 'Ex': 5}},
                            {'GarageCond': {'NA': 0,'Po': 1,'Fa': 2,'TA': 3,'Gd': 4,'Ex': 5}},
                            {'PavedDrive': {'N': 0,'P': 0, 'Y': 1}},
                            {'Fence': {'NA': 0, 'MnWw': 1,'GdWo': 2,'MnPrv': 3,'GdPrv': 4}},
                            {'SaleCondition': {'Abnorml': 1, 'Alloca': 1, 'AdjLand': 1, 'Family': 1, 'Normal': 0, 
                                               'Partial': 0}}
                           )

错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-40-f9c9c28b7237> in <module>()
     22                             {'Fence': {'NA': 0, 'MnWw': 1,'GdWo': 2,'MnPrv': 3,'GdPrv': 4}},
     23                             {'SaleCondition': {'Abnorml': 1, 'Alloca': 1, 'AdjLand': 1, 'Family': 1, 'Normal': 0, 
---> 24                                                'Partial': 0}}
     25                            )

TypeError: replace() takes from 1 to 8 positional arguments but 23 were given

如果我从上面的代码中删除'SaleCondition'行,错误再次出现,但这次是自下而上为每行代码引用'Fence'等。我在谷歌上搜索过,但不知道这意味着什么。非常感谢你的帮助。你知道吗


Tags: moddataallreplacepoex括号fa
1条回答
网友
1楼 · 发布于 2024-04-29 00:55:52

你应该这样做:

df.replace({'Fence':{'NA': 0, 'MnWw': 1,'GdWo': 2,'MnPrv': 3,'GdPrv': 4},'SaleCondition':{'Abnorml': 1, 'Alloca': 1, 'AdjLand': 1, 'Family': 1, 'Normal': 0,
                                               'Partial': 0}})

格式应该是.replace({'col1':{},'col2':{}})而不是.replace({'col1':{}},{'col2':{}})

相关问题 更多 >