如果一个特定的列只包含该ID的NaAs,则放弃多索引数据框的ID。

问题描述 投票:0回答:1

我有一个多索引数据框,看起来像这样(但有超过20k行和大约100列)。

         x1  x2  x3
Time ID
1    1   1   2   NaN
2    1   1   2   3
1    2   1   2   NaN
2    2   1   2   NaN

我想丢弃所有的ID,这些ID的列数x3只包含NaNs,但保留那些可能包含NaNs但也有一些实际值的ID。对于上面的例子,我所希望的输出是。

         x1  x2  x3
Time ID
1    1   1   2   NaN
2    1   1   2   3
python pandas dataframe nan multi-index
1个回答
1
投票

你想要 any 关于 groupby:

df[df.x3.notnull().groupby('ID').transform('any')]

输出。

         x1  x2   x3
Time ID             
1    1    1   2  NaN
2    1    1   2  3.0

0
投票

我们可以做到 dropnaisin

df=df.loc[df.index.get_level_values(1).isin(df.dropna().index.get_level_values(1))]
Out[71]: 
         x1  x2   x3
Time ID             
1    1    1   2  NaN
2    1    1   2  3.0
© www.soinside.com 2019 - 2024. All rights reserved.