gpt4 book ai didi

python-3.x - 为 Pandas 中的一列过滤出具有 NaN 值的组

转载 作者:行者123 更新时间:2023-12-04 10:09:50 25 4
gpt4 key购买 nike

给定一个数据框,如下所示:

  city district  year  price
0 bj cy 2018 NaN
1 bj cy 2019 6.0
2 sh hp 2018 4.0
3 sh hp 2019 3.0
4 bj hd 2018 7.0
5 bj hd 2019 NaN

我怎么才能分组 citydistrict , 如果 price 过滤行是 NaN ?谢谢你。

我需要的输出是这样的:
  city district  year  price
0 bj cy 2018 NaN
1 bj cy 2019 6.0
2 bj hd 2018 7.0
3 bj hd 2019 NaN

我试过 df.groupby(['city', 'district']).filter(lambda df: df[df['price'].isnull()]) ,但它不起作用。

最佳答案

使用 GroupBy.transform 测试是否至少有一个 NaN , 表示一个 True每组:

mask = (df.assign(test = df['price'].isnull())
.groupby(['city', 'district'])['test']
.transform('any'))
df = df[mask]

print (df)
city district year price
0 bj cy 2018 NaN
1 bj cy 2019 6.0
4 bj hd 2018 7.0
5 bj hd 2019 NaN

如果性能不重要或较小的 DataFrame 是可能的,请使用 DataFrameGroupBy.filter :
df = df.groupby(['city','district']).filter(lambda x: x['price'].isnull().any())

关于python-3.x - 为 Pandas 中的一列过滤出具有 NaN 值的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61383448/

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