【发布时间】:2020-03-28 10:00:34
【问题描述】:
希望仅返回具有至少 25% NaN 值的列作为新的 df
我正在考虑使用 .loc、.isnull 或 count 的 条件语句 >,但我不确定最有效的方法是什么。感谢所有帮助。
DF:
df1:
(axis 1 = A,B,C = series)
A B C
1 1 2 1
2 NaN NaN 3
3 4 NaN 1
4 2 NaN 4
思考:
df.loc[df['series'] == nan >= 25% ]
或者类似的东西:
if count(nan) for column(x) in 'series' is >= (.25 * (count(x)))
return loc[x]
返回新数据框:
df2:
A B
1 1 2
2 NaN NaN
3 4 NaN
4 2 NaN
返回 A 和 B,因为它们中的每一个都有至少 25% 的列条目为 NaN(缺失)
【问题讨论】:
-
@Chris 不幸的是没有。这有助于确定每列的百分比,但在基于给定百分比阈值重构 df 方面,它似乎缺乏。我的目标是跳过识别每列缺失值的过程,直接跳转到一个新的 df,它只包含遵循阈值规则的列。
-
@Alex 你不能用
dropna()吗? -
@AlexanderCécile 据我了解,
dropna()会丢弃 NaN,不是吗?我想删除至少没有 25% NaN 的列。所以也许我可以在有条件的情况下使用它?但我不知道如何应用它。 -
@Alex 查看docs,您可以让它删除 NA 值(
thresh参数)的数量大于您拥有的列数的 25% 的行。跨度>
标签: python pandas conditional-statements nan