gpt4 book ai didi

python Pandas : How do I drop specific levels in a hierarchical index if any column values are NaN?

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:17 26 4
gpt4 key购买 nike

如果某个国家/地区的任何数据值为 NaN,我想在我的层次结构索引中删除整个级别(在本例中为国家/地区)。所以我想从这样的事情开始:

                          M1                   M2
country year
Arab World 2010 5.240002 NaN
2009 NaN NaN
Bangladesh 2010 6.206065 3.7
2009 5.708707 NaN
Canada 2010 7.203803 5.8
2009 6.144833 7.0
Sweden 2010 9.123140 6.0
2009 5.213283 6.1

像这样:

                          M1                   M2
country year
Canada 2010 7.203803 5.8
2009 6.144833 7.0
Sweden 2010 9.123140 6.0
2009 5.213283 6.1

我已经尝试使用 df.dropna()thresh 选项,以及 df.fillna(0) 来尝试使删除国家更容易,但是如果 M1 和 M2 包含值,这两种方法都是为了在 DataFrame 中保留级别,例如2010 年的孟加拉国。

有什么简洁的方法可以解决这个问题吗?

最佳答案

是的,有一种简洁有效的方法可以解决这个问题。您在使用 df.dropna() 时走在了正确的轨道上,只是您需要在应用数据之前取消堆叠

>>> print df

M1 M2
Country Year
Arab World 2009 NaN NaN
2010 5.240002 NaN
Bangladesh 2009 5.708707 NaN
2010 6.206065 3.7
Canada 2009 6.144833 7.0
2010 7.203803 5.8
Sweden 2009 5.213283 6.1
2010 9.123140 6.0

旋转 DataFrame 使“年”成为最内层的列标签

>>> df1 = df.unstack(level=-1)

删除缺少数据的行

>>> df2 = df1.dropna()  

反转拆包

>>> print df2.stack()

M1 M2
Country Year
Canada 2009 6.144833 7.0
2010 7.203803 5.8
Sweden 2009 5.213283 6.1
2010 9.123140 6.0

把所有这些放在一起:

>>> clean = df.unstack(level=-1).dropna().stack()

关于 python Pandas : How do I drop specific levels in a hierarchical index if any column values are NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712223/

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