我有一个数据框df_data
和一个列表l_ids
。如下df_data.head()
所示:
并且l_lids[:5]
是[224960004, 60032008, 26677001, 162213003, 72405004]
我想获取l_id
列表中存在的行l_ids
。
所以我这样做:df_temp = df_data[df_data.isin(l_ids)]
但是,df_temp
其中有包含NaN的行。实际上,text
所有行的字段都是NaN。如下df_temp.head()
所示:
交叉检查:
print(79823003 in l_ids, 224960004 in l_ids)
True, True
尽我们所能l_ids[0]
is 224960004
which is present indf_temp
但它现在是 a float
,对应text
的是NaN。与79823003
其他 id 相同。
为什么会这样?我过去也遇到过同样的错误,但我通过其他一些方式得到了行并忽略了错误。但是现在它再次发生在一个不相关的项目中,我觉得我在这里犯了某种错误。
额外信息
df_data.info()
返回:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3577942 entries, 0 to 6953898
Data columns (total 2 columns):
text object
l_id int64
dtypes: int64(1), object(1)
df_temp.info()
返回:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3577942 entries, 0 to 6953898
Data columns (total 2 columns):
text object
l_id float64
dtypes: float64(1), object(1)
因此l_id
字段的数据类型从更改int64
为float64
。