如何使用自定义函数和.apply替换熊猫数据框中的多个值

时间:2020-01-16 01:46:18

标签: python pandas dataframe dictionary apply

我有多个具有相同多个序数值的列。我正在尝试创建一个可以与.apply一起使用的函数,应用于整个数据框。

def convert(value):
    if value == 'Ex':
        return value.replace('Ex', 5)
    elif value == 'Gd':
        return value.replace('Gd', 4)
    elif value == 'TA':
        return value.replace('TA', 3)
    elif value == 'Fa':
        return value.replace('Fa', 2)
    elif value == 'Po':
        return value.replace('Po', 1)
    elif value == 'NA':
        return value.replace('NA', 0)
    else:
        pass

我尝试以以下方式运行函数时收到ValueError

df.apply(convert, axis=0)

ValueError: ('The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().', 'occurred at index id')

有人知道这样做的最有效和/或Pythonic方法吗?

1 个答案:

答案 0 :(得分:0)

您可以只使用dictionary_name = {'name': 'John', 'Age': '20'} NAMES = romnum.pop(name) name = dictionary_name.pop(f"{NAMES}") print(name) 并通过字典映射,就像这样:

df.replace()

例如,将产生:

import pandas as pd

mapping = {'Ex': 5, 'Gd': 4, 'TA': 3, 'Fa': 2, 'Po': 1, 'NA': 0}

df = pd.DataFrame({'letters': ['Ex','TA','Ex','Fa','Po','TA','TA','Ex','NA','TA']})

df.replace(mapping)