熊猫:使用pythonmap()意外输出数据类型

熊猫:使用pythonmap()意外输出数据类型,python,python-3.x,pandas,dictionary,Python,Python 3.x,Pandas,Dictionary,我正在pandas.Dataframe上使用map()。 我试图将字符串映射到某个特定的整数 >>> df_train['gold_label'].head() 0 neutral 1 contradiction 2 entailment 3 contradiction 4 contradiction Name: gold_label, dtype: object >>> dic = {'entailment':

我正在pandas.Dataframe上使用
map()
。 我试图将字符串映射到某个特定的整数

>>> df_train['gold_label'].head()
0          neutral
1    contradiction
2       entailment
3    contradiction
4    contradiction
Name: gold_label, dtype: object
>>> dic = {'entailment': 0, 'neutral': 1, 'contradiction': 2}
>>> df_train['gold_label'] = df_train['gold_label'].map(dic)
>>> df_train['gold_label'].head()
0    1.0
1    2.0
2    0.0
3    2.0
4    2.0
Name: gold_label, dtype: float64
我希望得到一个整数结果,但实际上是一个
float64
。 但是,我使用另一个相同格式的数据集(上面是dev数据集),结果将是预期的整数


上述过程中哪里出错?

如Akshay所述,如果在数据帧中找到字典映射之外的值,则结果值将为“NaN”,并导致结果

> a
array(['neutral', 'contradiction', 'entailment', 'contradiction',
   'contradiction'],
  dtype='|S13')
> b
array(['neutral', 'contradiction', 'entailment', 'contradiction',
   'contradiction', 'test'],
  dtype='|S13')
> d = pd.DataFrame(a, columns=['gold_label'])
> d2 = pd.DataFrame(b, columns=['gold_label'])
> dic = {'contradiction': 2, 'entailment': 0, 'neutral': 1}
> d['gold_label'].map(dic)
 0    1
 1    2
 2    0
 3    2
 4    2
 Name: gold_label, dtype: int64
 > d2['gold_label'].map(dic)
 0    1.0
 1    2.0
 2    0.0
 3    2.0
 4    2.0
 5    NaN
 Name: gold_label, dtype: float64

您的列可能有空值。太棒了,谢谢!这就是原因。我在数据集中发现空值。我信任数据源,但在继续之前,我应该始终进行数据探索!