Pandas:删除具有纳米值索引的行

2024-04-28

给定以下 pandas DataFrame,其中一些索引是NaN,如何删除第三行和第八行,因为它们的索引是NaN? Thanks

import pandas as pd
import numpy  as np

data    = list('abcdefghil')
indices = [0, 1, np.nan, 3, 4, 5, 6, np.nan, 8, 9]

df = pd.DataFrame(data, index=indices, columns=['data'])

您可以致电dropna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.dropna.html#pandas.Index.dropna在索引上:

In[68]:
df.loc[df.index.dropna()]

Out[68]: 
    data
0.0    a
1.0    b
3.0    d
4.0    e
5.0    f
6.0    g
8.0    i
9.0    l

请注意,存在NaN使索引dtype float,将其更改为int投射类型:

In[70]:
df = df.loc[df.index.dropna()]
df.index = df.index.astype(int)
df

Out[70]: 
  data
0    a
1    b
3    d
4    e
5    f
6    g
8    i
9    l

您也可以致电notnull在索引上也可以工作(不知何故没有记录)

In[71]:
df = df.loc[df.index.notnull()]
df.index = df.index.astype(int)
df

Out[71]: 
  data
0    a
1    b
3    d
4    e
5    f
6    g
8    i
9    l

还有isna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.isna.html#pandas.Index.isna:

In[78]:
df.loc[~df.index.isna()]

Out[78]: 
    data
0.0    a
1.0    b
3.0    d
4.0    e
5.0    f
6.0    g
8.0    i
9.0    l

和更易读的逆notna http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.notna.html#pandas.Index.notna:

In[79]:
df.loc[df.index.notna()]

Out[79]: 
    data
0.0    a
1.0    b
3.0    d
4.0    e
5.0    f
6.0    g
8.0    i
9.0    l

正如@jpp 所评论的,您可以使用顶级notnull http://pandas.pydata.org/pandas-docs/stable/generated/pandas.notnull.html#pandas.notnull also:

In[80]:
df.loc[pd.notnull(df.index)]

Out[80]: 
    data
0.0    a
1.0    b
3.0    d
4.0    e
5.0    f
6.0    g
8.0    i
9.0    l

还有顶级的isna, notna, and isnull但我不会显示这些,你可以检查docs http://pandas.pydata.org/pandas-docs/stable/api.html#top-level-missing-data

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas:删除具有纳米值索引的行 的相关文章

随机推荐