在Pandas中查找已删除的行

问题描述 投票:1回答:1

我有一个大约64,000行的Pandas DataFrame。看起来大致如下:

               values
asn   country
12345 US       ...
12345 MX       ...

我遇到一个错误,说MultiIndex不能包含非唯一值。这让我怀疑我的索引中有一些NaN值。所以我尝试了以下验证:

df = # my data frame
rows = df.shape[0]
df = df.reindex(df.index.dropna())
if df.shape[0] < rows:
    print "Dropped %s NaN rows!" % (rows - df.shape[0])

正如预期的那样,这打印出“Dropped 10 NaN rows!”......虽然现在我想找出哪些行被删除,所以我可以调查他们是如何进入我的DataFrame的。

我怎样才能做到这一点?我已经尝试通过Pandas文档查找像df.index.isna()(没有骰子)的东西,我尝试采用“之前”和“之后”数据框架并计算它们的差异,但不知道如何做到这一点和我的尝试导致索引错误。

python pandas dataframe
1个回答
1
投票

您可以使用MultiIndex.to_frame获取与您的索引等效的DataFrame,然后组合isnaany以确定空行:

idxr = df.index.to_frame().isna().any(axis=1)

您现在可以使用它来通过DataFrame过滤df[idxr],以限制MultiIndex中具有空值的行。

注意:对于旧版本的pandas,您需要使用isnull而不是isna

© www.soinside.com 2019 - 2024. All rights reserved.