Pandas取代伊苏

2024-05-19 21:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用字典使用熊猫替换来替换数据帧中的值:

prod_dict     = {1:'Productive',2:'Moderate',3:'None'}
df['val'].replace(prod_dict,inplace=True)

如果我想用一个数字替换数据帧中的一组值,我该怎么办。E、 g我想将所有值从1映射到20到1;所有值从21到40到2,以及41到100到3的所有值。我如何在字典中指定这个,并在熊猫替换中使用?


Tags: 数据nonetruedf字典数字valprod
1条回答
网友
1楼 · 发布于 2024-05-19 21:38:53

您可以使用apply遍历并在每个元素上应用函数,使用lambda编写一个函数来用字典中的值替换键。在

我将在这里简单介绍一个例子。在

  • 首先,我将创建一个数据帧来展示算法
df = pd.DataFrame(range(50), columns=list('B'))
  • 此函数应生成i,j之间的值列表。在
def genValues(i,j):
  return [x for x in range(j+1) if x >=i]
  • 我将创建lambda函数来映射值。在
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

可以通过替换柱来替换它:

^{pr2}$

相关问题 更多 >