python - 为数据集中的一列添加基于字典的列,但得到 NaN
问题描述
我正在尝试根据应用于数据集中其中一列的字典在数据集中添加一列。但是在尝试了下面的代码之后,我在新列中得到了 NaN,尽管字典所基于的列中没有丢失值。
代码:
import pandas as pd
df = pd.read_csv('test.csv')
val_dict = {'1':'8','2':'5','3':'3','4':'2'}
df['val2'] = df['val'].map(val_dict)
df
我得到的输出是
val val2
解决方案
根据您的df
,我假设该列val
包含整数值。但是您上面提供的字典包含的键为str
.
因此,将字典键从 str 更改为 int。(i.e val_dict = {1:'8',2:'5',3:'3',4:'2'})
例如:1(显示错误)
df = pd.DataFrame({'val' : [1,2,2,1,2,3,3,4]})
val_dict = {'1':'8','2':'5','3':'3','4':'2'}
df['val_2'] = df['val'].map(val_dict)
print(df)
val val_2
0 1 NaN
1 2 NaN
2 2 NaN
3 1 NaN
4 2 NaN
5 3 NaN
6 3 NaN
7 4 NaN
例如:2(更正的 dict 结果)
df = pd.DataFrame({'val' : [1,2,2,1,2,3,3,4]})
val_dict = {1:'8',2:'5',3:'3',4:'2'}
df['val_2'] = df['val'].map(val_dict)
print(df)
val val_2
0 1 8
1 2 5
2 2 5
3 1 8
4 2 5
5 3 3
6 3 3
7 4 2
推荐阅读
- java - 使用 GL_LINES 渲染的 OpenGL ES 抗锯齿
- heroku - Heroku:如何减小 .NET Core/Angular 应用程序块的大小?
- javascript - 重构我的javascript代码,我需要一种方法来防止鼠标打开时重复文本?
- swift - 我怎样才能避免这种情况下的强制取消变形?
- testing - 如何在nestjs的e2e测试中配置中间件
- bash - 如何将 sed 的结果回显到 bash 中的文件?
- ruby - 在 Visual Studio Code 上安装 scss-lint 时出错
- c# - 使用 INotifyDataErrorInfo 处理转换异常
- angular - 在材质表页脚中包含按钮和分页器
- node.js - nodeJS 在外部脚本文件中使用 NPM 模块