Python 熊猫取代问题
我可以使用pandas replace使用字典替换数据帧中的值:Python 熊猫取代问题,python,replace,pandas,Python,Replace,Pandas,我可以使用pandas replace使用字典替换数据帧中的值: prod_dict = {1:'Productive',2:'Moderate',3:'None'} df['val'].replace(prod_dict,inplace=True) 如果我想用一个数字替换数据帧中的一组值,该怎么办。例如,我想将所有值从1映射到20,再映射到1;所有值从21到40到2,所有值从41到100到3。如何在字典中指定并在替换中使用它?您可以使用apply遍历并在每个元素上应用函数,使用lam
prod_dict = {1:'Productive',2:'Moderate',3:'None'}
df['val'].replace(prod_dict,inplace=True)
如果我想用一个数字替换数据帧中的一组值,该怎么办。例如,我想将所有值从1映射到20,再映射到1;所有值从21到40到2,所有值从41到100到3。如何在字典中指定并在替换中使用它?您可以使用
apply
遍历并在每个元素上应用函数,使用lambda编写函数,用字典中的值替换键
我将在这里简要介绍一个示例
- 首先,我将创建一个dataframe来展示算法
- 此函数应生成i,j之间的值列表李>
- 我将创建lambda函数来映射这些值
B E
0 0 1
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
6 6 1
7 7 1
8 8 1
9 9 1
10 10 1
11 11 1
12 12 1
13 13 1
14 14 1
15 15 1
16 16 1
17 17 1
18 18 1
19 19 1
20 20 1
21 21 2
22 22 2
23 23 2
24 24 2
25 25 2
26 26 2
27 27 2
28 28 2
29 29 2
30 30 2
31 31 2
32 32 2
33 33 2
34 34 2
35 35 2
36 36 2
37 37 2
38 38 2
39 39 2
40 40 2
41 41 3
42 42 3
43 43 3
44 44 3
45 45 3
46 46 3
47 47 3
48 48 3
49 49 3
您可以通过以下方式替换该列:
df['B']= df['B'].apply(lambda x: 1 if x in genValues(0,20) else 2 if x in genValues(21,40) else 3 if x in genValues(41,100) else x)
您在上面创建的词典!你想要改变的价值观。我想把每一个价值观“1”转化为“生产性”、“2”转化为“适度”。。等等,啊,那是一对一的映射。我实际上想使用一个多值单键字典。不确定你的解决方案是否适用?我认为那本字典不是一个好的解决方案。字典已创建为1对1映射。您可以通过分离案例来实现这一点。检查更新版本。
df['E']= df['B'].apply(lambda x: 1 if x in genValues(0,20) else 2 if x in genValues(21,40) else 3 if x in genValues(41,100) else x)
print df
B E
0 0 1
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
6 6 1
7 7 1
8 8 1
9 9 1
10 10 1
11 11 1
12 12 1
13 13 1
14 14 1
15 15 1
16 16 1
17 17 1
18 18 1
19 19 1
20 20 1
21 21 2
22 22 2
23 23 2
24 24 2
25 25 2
26 26 2
27 27 2
28 28 2
29 29 2
30 30 2
31 31 2
32 32 2
33 33 2
34 34 2
35 35 2
36 36 2
37 37 2
38 38 2
39 39 2
40 40 2
41 41 3
42 42 3
43 43 3
44 44 3
45 45 3
46 46 3
47 47 3
48 48 3
49 49 3
df['B']= df['B'].apply(lambda x: 1 if x in genValues(0,20) else 2 if x in genValues(21,40) else 3 if x in genValues(41,100) else x)