Python 如何使用自定义函数和.apply替换数据框中的多个值
我有多个列具有相同的多个序号值。我正在尝试创建一个可以用于的函数。应用于整个数据帧Python 如何使用自定义函数和.apply替换数据框中的多个值,python,pandas,dataframe,dictionary,apply,Python,Pandas,Dataframe,Dictionary,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)
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(转换,轴=0)
有人知道最有效和/或最符合Python的方法吗?您可以使用
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)
例如,这将产生:
letters
0 5
1 3
2 5
3 2
4 1
5 3
6 3
7 5
8 0
9 3
如果有多个,则需要循环所有列。您应该使用键/值对的
dict
。
letters
0 5
1 3
2 5
3 2
4 1
5 3
6 3
7 5
8 0
9 3