首页 > 解决方案 > 为数据集中的一列添加基于字典的列,但得到 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

在此处输入图像描述

标签: pythonpython-3.xpandas

解决方案


根据您的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

推荐阅读