我正在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数据集),结果将是预期的整数。
上述程序哪里出问题了?
答案 0 :(得分:0)
如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