首页 > 解决方案 > 如果熊猫数据框中不存在替换术语,如何忽略它们?

问题描述

我有以下代码将一个术语替换为另一个术语,这仅在熊猫数据框中存在该值时才有效,我假设我需要包含gdf[montype] = gdf[montype].replace(dict(montype), regex=True)一个if statement?我该怎么做,或者有更好的方法吗?

    montype = [
        ['HIS_COP_', ''],
        ['_Ply', ''],
        ['_Pt',''],
        ['BURIAL','burial'],
        ['CUT', 'CUT'],
        ['MODERN', 'MODERN'],
        ['NATURAL', 'NATURAL'],
        ['STRUCTURE', 'STRUCTURE'],
        ['SURFACE', 'SURFACE'],
        ['TREETHROW', 'natural feature'],
        ['FURROW', 'FURROW'],
        ['FIELD_DRAIN', 'FIELD_DRAIN'],
        ['DEPOSIT_FILL', 'DEPOSIT_FILL'],
        ['POSTHOLE', ''],
        ['TIMBER', ''],
        ['', '']
    ]

    gdf[montype] = gdf[montype].replace(dict(montype), regex=True)

当该术语不存在时,我收到错误raise KeyError(f"None of [{key}] are in the [{axis_name}]")

编辑:

    mtype = {
                'HIS_COP_': '',
                '_Ply': '',
                '_Pt': '',
                'BURIAL': 'burial',
                'CUT': 'CUT',
                'MODERN': 'MODERN',
                'NATURAL': 'NATURAL',
                'STRUCTURE': 'STRUCTURE',
                'SURFACE': 'SURFACE',
                'TREETHROW': 'natural feature',
                'FURROW': 'FURROW',
                'FIELD_DRAIN': 'FIELD_DRAIN',
                'DEPOSIT_FILL': 'DEPOSIT_FILL',
                'POSTHOLE': '',
                'TIMBER': ''
               }  # dict(montype)

    gdf['montype'] = gdf['montype'].map(mtype).fillna(gdf['montype'])

标签: pandasreplace

解决方案


你可以试试这个:

# Convert you list to dict

Montype={'His_cop':'','Modern':'Modern', etc...} # dict(montype)

gdf[montype]=gdf[montype].map(Montype).fillna('whatever value you want')

推荐阅读