【发布时间】:2021-08-26 08:57:55
【问题描述】:
我有一个包含以下列和数据类型的数据框:
np_id object
target_id object
activity_type object
activity_value object
activity_units object
assay_cell_type object
SMILES object
standard_inchi_key object
standard_inchi object
target_type object
target_name object
target_organism_tax_id object
target_organism object
uniprot_id object
dtype: object
df.uniprot_id 看起来像这样:
0 [nan]
1 [Q96KQ7]
2 [nan]
3 [P25779]
4 [nan]
...
493830 [nan]
493831 [nan]
493832 [nan]
493833 [nan]
493834 [nan]
而df['uniprot_id'].isnull().values.any() 给出False
我想删除所有没有 uniprot_id 的行。我尝试了以下方法:
df.dropna(subset=['uniprot_id'], inplace=True)
df = df[df['uniprot_id'] != 'nan']
df = df[df['uniprot_id'] != 'NaN']
df[df.uniprot_id.notnull()]
为什么我的尝试不起作用?如何删除 nan 值,从而从数据框中删除行?
【问题讨论】:
-
据我了解,您的
[nan]值是(一个)元素nan的列表,不是吗?在dropna之前使用@Tom 回答替换它们。请记住,@Tom 理解那些是 ('[nan]') 字符串,我认为这些是列表......无论如何,这个概念是 (你没有纯nan/None对象在那些细胞) -
@Brandt 实际上你可能是对的,我只是说字符串,因为这是我在复制他的示例 df 后使用 pd.read_clipboard() 时发生的事情,但经过一些测试后,它很可能是一个专门持有的列表一个 np.nan(而不是一个 None)
标签: python pandas dataframe nan