我有一个类似于此的多索引数据帧(但有超过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只包含NaN,但保留可能包含NaN但也有一些实际值的ID。对于上面的例子,我想要的输出是:
x1 x2 x3
Time ID
1 1 1 2 NaN
2 1 1 2 3发布于 2020-06-11 20:51:57
你想在groupby上使用any
df[df.x3.notnull().groupby('ID').transform('any')]输出:
x1 x2 x3
Time ID
1 1 1 2 NaN
2 1 1 2 3.0发布于 2020-06-11 21:12:19
我们可以用isin做dropna
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.0https://stackoverflow.com/questions/62324821
复制相似问题