gpt4 book ai didi

python - 如何在不明确列出列的情况下从 pandas DataFrame 中选择具有一个或多个空值的行?

转载 作者:IT老高 更新时间:2023-10-28 12:21:15 28 4
gpt4 key购买 nike

我有一个约 300K 行和约 40 列的数据框。我想知道是否有任何行包含空值 - 并将这些“空”行放入单独的数据框中,以便我可以轻松地探索它们。

我可以显式地创建一个掩码:

mask = False
for col in df.columns:
mask = mask | df[col].isnull()
dfnulls = df[mask]

或者我可以这样做:

df.ix[df.index[(df.T == np.nan).sum() > 1]]

有没有更优雅的方法(定位带有空值的行)?

最佳答案

[已更新以适应现代pandas,其中isnull作为DataFrames..的方法]

您可以使用 isnullany 构建一个 bool 系列并使用它来索引到您的框架:

>>> df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)])
>>> df.isnull()
0 1 2
0 False False False
1 False True False
2 False False True
3 False False False
4 False False False
>>> df.isnull().any(axis=1)
0 False
1 True
2 True
3 False
4 False
dtype: bool
>>> df[df.isnull().any(axis=1)]
0 1 2
1 0 NaN 0
2 0 0 NaN

[对于较旧的pandas:]

您可以使用函数 isnull 代替方法:

In [56]: df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)])

In [57]: df
Out[57]:
0 1 2
0 0 1 2
1 0 NaN 0
2 0 0 NaN
3 0 1 2
4 0 1 2

In [58]: pd.isnull(df)
Out[58]:
0 1 2
0 False False False
1 False True False
2 False False True
3 False False False
4 False False False

In [59]: pd.isnull(df).any(axis=1)
Out[59]:
0 False
1 True
2 True
3 False
4 False

导致相当紧凑:

In [60]: df[pd.isnull(df).any(axis=1)]
Out[60]:
0 1 2
1 0 NaN 0
2 0 0 NaN

关于python - 如何在不明确列出列的情况下从 pandas DataFrame 中选择具有一个或多个空值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14247586/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com