Pandas:使用python map()意外输出数据类型



我在熊猫身上使用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",并导致float64结果。

> 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

最新更新