python - 找到第二列的所有值都是 NaN 的 pandas Dataframe 列的唯一行
问题描述
嗨,我正在努力解决以下问题:
给定一个带有列的数据框,name
我variable
想创建 2 个列表:
- list_names_nan 包含变量列中所有值为 nan 的名称
- list_names_not_nan 包含变量列中列表 1 值不是 nan 的名称
下面是一个例子
import pandas
import numpy
df = pandas.DataFrame(data=[['x',1],['y',2],['x',4],['z',numpy.nan],
['x',numpy.nan],['y',3],['x',numpy.nan],['z',numpy.nan],],
columns=['name','variable'])
df:
name variable
0 x 1.0
1 y 2.0
2 x 4.0
3 z NaN
4 x NaN
5 y 3.0
6 x NaN
7 z NaN
所需的输出应该是
list_names_nan = [z]
list_names_not_nan = [x,y]
解决方案
用于Series.isna
创建布尔掩码,然后Series.groupby
在此掩码上使用并聚合,all
最后使用此掩码m
过滤nan
和not_nan
值:
m = df['variable'].isna().groupby(df['name']).all()
nan, not_nan = m[m].index.tolist(), m[~m].index.tolist()
结果:
['z'] # nan
['x', 'y'] # not_nan
推荐阅读
- database - Mongoose:TypeError:模式路径`guildId.type`的值无效,得到值“未定义”
- javascript - 仅用于数据结构和数据库的前端(React)解决方案
- python - 如何转换宽数据框以绘制特定数据
- regex - 正则表达式在文本文件中突出显示高于 85% 红色的百分位数
- flyway - 如何创建脚本或 Flyway 可以配置为每次使用 SQL 回调调用它?
- spartacus-storefront - 斯巴达克斯 2.1.9 在 2.0.0 之后的购物车效果问题
- rx-java - RxJava 抛出异常或使用 onError
- javascript - 按类别过滤数据
- eclipse - EMF:空比较总是产生错误:字段...是一个非空常量
- apache-spark - Spark 应用程序与 Hive 元存储同步 - “UGI spark 没有主组”错误