熊猫:使用pythonmap()意外输出数据类型
我正在pandas.Dataframe上使用熊猫:使用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':
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
您的列可能有空值。太棒了,谢谢!这就是原因。我在数据集中发现空值。我信任数据源,但在继续之前,我应该始终进行数据探索!