gpt4 book ai didi

python - 查找 pandas Dataframe 列的唯一行,其中第二列的所有值都是 NaN

转载 作者:行者123 更新时间:2023-12-05 03:51:26 26 4
gpt4 key购买 nike

您好,我正在努力解决以下问题:

给定一个包含列 namevariable 的数据框,我想创建 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创建一个 bool 掩码然后使用 Series.groupby在此掩码上并使用 all 聚合最终使用此掩码 m 过滤 nannot_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

关于python - 查找 pandas Dataframe 列的唯一行,其中第二列的所有值都是 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62911193/

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