我有多个具有相同多个序数值的列。我正在尝试创建一个可以与.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方法吗?
答案 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)