我可以使用pandas替换来使用字典替换数据框中的值:
prod_dict = {1:'Productive',2:'Moderate',3:'None'}
df['val'].replace(prod_dict,inplace=True)
如果我想用一个数字替换数据框中的一组值,该怎么办?例如,我想将所有值从1到20映射到1;所有值从21到40到2以及所有值从41到100到3.如何在字典中指定它并在pandas replace中使用它?
答案 0 :(得分:1)
您可以使用apply
遍历并在每个元素上应用函数,并使用lambda编写一个函数来将字符替换为字典中的值。
我将在这里通过一个简单的例子。
df = pd.DataFrame(range(50), columns=list('B'))
def genValues(i,j): return [x for x in range(j+1) if x >=i]
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)