gpt4 book ai didi

python - 如何正确使用 pandas Series.map() 和映射字典?

转载 作者:行者123 更新时间:2023-12-01 07:42:19 25 4
gpt4 key购买 nike

数据框smaller_df看起来像这样:

> smaller_df.head()
MSA Code Line RPP
0 10180 1.0 91.2
1 10180 2.0 97.4
2 10180 3.0 78.7
3 10180 4.0 93.5
4 10420 1.0 90.4
...

smaller_df.dtypes 结果为

MSA Code      int64
Line float64
RPP float64
Wages object
dtype: object

wage_keys.head() 给出:

   MSA Code  Average Wage
0 11260 94490.000000
1 21820 72080.000000
2 10180 71128.571429
3 13820 87338.396624
4 10420 76620.000000
...

wage_keys.dtypes 是:

MSA Code          int64
Average Wage float64
dtype: object

请注意,相同的“MSA 代码”可以在smaller_df 中出现多次,但在wage_keys 中只能出现一次。

我希望将smaller_df中的新列“Wages”设置为wage_keys中的相应值。

所以新表应该如下所示:

   MSA Code  Line   RPP Wages
0 10180 1.0 91.2 71128.571429
1 10180 2.0 97.4 71128.571429
2 10180 3.0 78.7 71128.571429
3 10180 4.0 93.5 71128.571429
4 10420 1.0 90.4 76620.000000
...

我有以下代码来通过制作工资字典来进行映射:

wages = wage_keys.set_index('MSA Code').to_dict()
smaller_df['Wages'] = smaller_df['MSA Code'].map(wages)

问题是这会导致:

   MSA Code  Line   RPP Wages
0 10180 1.0 91.2 NaN
1 10180 2.0 97.4 NaN
2 10180 3.0 78.7 NaN
3 10180 4.0 93.5 NaN
4 10420 1.0 90.4 NaN

显然,我错过了一些东西。如何将“工资”列的值设置为工资字典(或工资 key 数据帧)中的正确对应值?

最佳答案

您的错误在于转换为字典。你做到了,

df2.set_index('MSA Code').to_dict()
# {
# "Average Wage": {
# "10180": 71128.571429,
# "10420": 76620.0,
# "11260": 94490.0,
# "13820": 87338.396624,
# "21820": 72080.0
# }
# }

这会产生一个字典中的字典。你应该做的是,

df2.set_index('MSA Code')['Average Wage'].to_dict()
# {11260: 94490.0, 21820: 72080.0, 10180: 71128.571429, 13820: 87338.396624, 10420: 76620.0}

或者,

df2.set_index('MSA Code')['Average Wage']

MSA Code
11260 94490.000000
21820 72080.000000
10180 71128.571429
13820 87338.396624
10420 76620.000000
Name: Average Wage, dtype: float64

这两者都会产生 map 可以理解的映射格式。现在您的 map 调用会产生预期的输出:

df['Wages'] = df['MSA Code'].map(df2.set_index('MSA Code')['Average Wage'])
df

MSA Code Line RPP Wages
0 10180 1.0 91.2 71128.571429
1 10180 2.0 97.4 71128.571429
2 10180 3.0 78.7 71128.571429
3 10180 4.0 93.5 71128.571429
4 10420 1.0 90.4 76620.000000

关于python - 如何正确使用 pandas Series.map() 和映射字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56638227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com