如何通过遍历字典有效地替换数据帧中的值?

克里斯塔达673

我有一个工资范围的数据框,如下所示:

import pandas as pd
df = pd.DataFrame(columns=['Salary'])
df.Salary = ['30,000-39,999', '5,000-7,499', '250,000-299,999', '4,000-4,999', '60,000-69,999', '10,000-14,999', '80,000-89,999', '$0-999', '2,000-2,999', '70,000-79,999', '90,000-99,999', '125,000-149,999', '$0-999', '$0-999', '40,000-49,999', '20,000-24,999', '125,000-149,999', '$0-999', '10,000-14,999', '15,000-19,999', '20,000-24,999', '100,000-124,999', '$0-999']
df

在此处输入图片说明

我想用数字替换工资范围的这些字符串值,其中 1 表示$0-999,2 表示1000-1999等。所以,下面是我的代码来做到这一点,我制作了一个将字符串映射到数字的字典,并使用 2 表示循环 - 一个循环遍历数据帧中的每一行,一个循环遍历字典中的每个元素:

salary_dict = {'$0-999':1, '1,000-1,999':2, '2,000-2,999':3, '3,000-3,999':4, '4,000-4,999':5, 
           '5,000-7,499':6, '7,500-9,999':7, '10,000-14,999':8, '15,000-19,999':9, '20,000-24,999':10, 
           '25,000-29,999':11, '30,000-39,999':12, '40,000-49,999':13, '50,000-59,999':14, '60,000-69,999':15, 
           '70,000-79,999':16, '80,000-89,999':17, '90,000-99,999':18, '100,000-124,999':19, '125,000-149,999':20, 
           '150,000-199,999':21, '200,000-249,999':22, '250,000-299,999':23, '300,000-500,000':24, '> $500,000':25}

for i in range(len(df)):
    for key in salary_dict:
        if df.Salary[i]==key:
            df.Salary[i] = salary_dict[key]
            break

df

在此处输入图片说明

这对于小数据帧来说没问题,但是对于更大(更长)的数据帧,代码需要很长时间才能完成运行。我如何优化它?

普扬
  • 最有效的方法是使用系列apply函数。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.apply.html
  • apply在系列上使用函数应用定义到每个 elemet 的任何函数。
  • 在这里,我们将 的每个元素映射df['Salary']到字典中的等效值。
  • 如果您不理解这部分,请lambda x: salary_dict.get(x, x)查看 python lambdas。
  • get对dictonary方法只是用来保障柜面钥匙不在dictonary。
df['Salary'] = df['Salary'].apply(lambda x: salary_dict.get(x, x))
print(df)

输出:

   Salary
0   12
1   6
2   23
3   5
4   15
5   8
6   17
7   1
8   3
9   16
10  18
11  20
12  1
13  1
14  13
15  10
16  20
17  1
18  8
19  9
20  10
21  19
22  1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过跳过缺失值来有效地遍历字典列表值Python 3

来自分类Dev

Python - 如何有效地遍历字典的子集?

来自分类Dev

用 0 有效地替换 h2o 数据帧中的所有 NULL 值

来自分类Dev

当这些在字典列表中时,如何通过不同的接口值有效地计算 mac 值的出现次数?

来自分类Dev

如何有效地合并 PySpark 数据帧?

来自分类Dev

如何通过数据帧一次有效地计算行数

来自分类Dev

有效地找到R中数据帧中不同行的列值计数

来自分类Dev

如何有效地查找PySpark数据帧中每一列的Null和Nan值计数?

来自分类Dev

如何有效地用随机值替换数据框列列表中的某个值?

来自分类Python

如何有效地计算运行最大值的熊猫数据帧?

来自分类Dev

如何有效地对熊猫数据帧的行的值求和

来自分类Dev

如何更有效地更新数据帧值?

来自分类Dev

如何有效地将字典中的数据添加到数据框中?

来自分类Dev

如何有效地从具有特定值模式的字典中删除元素?

来自分类Dev

如何有效地找到R中数据帧的插入索引?

来自分类Dev

如何有效地匹配两个数据帧中的字符串

来自分类Dev

如何有效地找到二进制数据帧中的模式?

来自分类Dev

如何在python中有效地将字典中的值分组

来自分类Dev

如何有效地将数据框中的条目映射到字典

来自分类Dev

如何有效地从一维数组中替换相同的连续值

来自分类Dev

如何有效地获取具有NaN值的数据帧的相关矩阵(具有p值)?

来自分类Dev

如何有效地用数据框中的中位数替换范围

来自分类Dev

如何根據字典列表中的另一個值有效地查找字典值

来自分类Dev

numpy:使用字典作为地图有效地替换2D数组中的值

来自分类Dev

如何通过未知列中的唯一值有效地更新 MySQL 行

来自分类Dev

如何有效地更改数据框中的值

来自分类Dev

如何有效地在数据框中传输值?

来自分类Dev

如何有效地测试人偶中深层嵌套的数据值以采取措施?

来自分类Dev

如何有效地选择Spark中包含特定值的数据框列?

Related 相关文章

  1. 1

    通过跳过缺失值来有效地遍历字典列表值Python 3

  2. 2

    Python - 如何有效地遍历字典的子集?

  3. 3

    用 0 有效地替换 h2o 数据帧中的所有 NULL 值

  4. 4

    当这些在字典列表中时,如何通过不同的接口值有效地计算 mac 值的出现次数?

  5. 5

    如何有效地合并 PySpark 数据帧?

  6. 6

    如何通过数据帧一次有效地计算行数

  7. 7

    有效地找到R中数据帧中不同行的列值计数

  8. 8

    如何有效地查找PySpark数据帧中每一列的Null和Nan值计数?

  9. 9

    如何有效地用随机值替换数据框列列表中的某个值?

  10. 10

    如何有效地计算运行最大值的熊猫数据帧?

  11. 11

    如何有效地对熊猫数据帧的行的值求和

  12. 12

    如何更有效地更新数据帧值?

  13. 13

    如何有效地将字典中的数据添加到数据框中?

  14. 14

    如何有效地从具有特定值模式的字典中删除元素?

  15. 15

    如何有效地找到R中数据帧的插入索引?

  16. 16

    如何有效地匹配两个数据帧中的字符串

  17. 17

    如何有效地找到二进制数据帧中的模式?

  18. 18

    如何在python中有效地将字典中的值分组

  19. 19

    如何有效地将数据框中的条目映射到字典

  20. 20

    如何有效地从一维数组中替换相同的连续值

  21. 21

    如何有效地获取具有NaN值的数据帧的相关矩阵(具有p值)?

  22. 22

    如何有效地用数据框中的中位数替换范围

  23. 23

    如何根據字典列表中的另一個值有效地查找字典值

  24. 24

    numpy:使用字典作为地图有效地替换2D数组中的值

  25. 25

    如何通过未知列中的唯一值有效地更新 MySQL 行

  26. 26

    如何有效地更改数据框中的值

  27. 27

    如何有效地在数据框中传输值?

  28. 28

    如何有效地测试人偶中深层嵌套的数据值以采取措施?

  29. 29

    如何有效地选择Spark中包含特定值的数据框列?

热门标签

归档