gpt4 book ai didi

python - 按组删除 NaN 值

转载 作者:行者123 更新时间:2023-12-01 09:06:24 32 4
gpt4 key购买 nike

我有一个数据框,其中“ Material ”列指示产品代码,“值”列对应产品值,“月份”列对应月份。

       Year   Month Materiais  Values
0 2018 M1 52745 NaN
1 2018 M2 52745 NaN
2 2018 M3 52745 NaN
3 2018 M4 52745 NaN
4 2018 M5 52745 NaN
5 2018 M6 52745 NaN
6 2018 M7 52745 NaN
7 2018 M1 58859 NaN
8 2018 M2 58859 NaN
9 2018 M3 58859 NaN
10 2018 M4 58859 NaN
11 2018 M5 58859 300
12 2018 M6 58859 NaN
13 2018 M7 58859 NaN
14 2018 M1 57673 NaN
15 2018 M2 57673 100
16 2018 M3 57673 NaN
17 2018 M4 57673 150

1-) 我希望在此数据框中仅包含在一个月内至少具有值(value)的产品。

所以我的想法是将所有相似的产品代码分组,并检查是否至少有一个值 != NaN

为了分组,我使用此功能:

df = df_demand.groupby(['Materiais'], sort=False, as_index=False)
  • 我想知道,如何创建一个条件来应用 dropna(),仅适用于所有月份都有 NaN 值的产品?

Result 1

2-) 过滤至少有一个值 != NaN' 的月份,使用类似的方法:

df = df_demanda.groupby(['Month'], sort=False, as_index=False)

最佳答案

首先,您想要获得一个聚合来指示给定产品是否具有非空值(nan 不是“真实的”):

materiais_any_non_null = df.groupby('Materiais')['Values'].transform('any')

然后用它来掩盖你的df:

df[materiais_any_non_null]

结果:

    Year Month  Materiais  Values
7 2018 M1 58859 NaN
8 2018 M2 58859 NaN
9 2018 M3 58859 NaN
10 2018 M4 58859 NaN
11 2018 M5 58859 300.0
12 2018 M6 58859 NaN
13 2018 M7 58859 NaN
14 2018 M1 57673 NaN
15 2018 M2 57673 100.0
16 2018 M3 57673 NaN
17 2018 M4 57673 150.0

关于python - 按组删除 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52012173/

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