Python 使用组,仅删除重复的NAN

Python 使用组,仅删除重复的NAN,python,pandas,Python,Pandas,根据分析、图像和Roi对我的数据进行分组,对于每个组,我希望删除除“强度”列中具有NaN值的第一行以外的所有行 我的尝试能够删除重复项,但这不是特定于NaN值的 from pandas import Series, DataFrame import pandas as pd import numpy as np df = DataFrame({'assay':['cnt']*11, 'image':['001']*10+['002'],

根据分析、图像和Roi对我的数据进行分组,对于每个组,我希望删除除“强度”列中具有NaN值的第一行以外的所有行

我的尝试能够删除重复项,但这不是特定于NaN值的

from pandas import Series, DataFrame
import pandas as pd
import numpy as np

df = DataFrame({'assay':['cnt']*11,
                'image':['001']*10+['002'],
                'roi':['1']*5+['2']*5+['3'],
                'dist':[99,90,50,2,30,65,95,30,56,5,33],
                'cellArea':[99,90,50,2,30,65,95,30,56,5,33],
                'xy':np.fabs(np.random.randn(11)*100),
                'intensity':[88,88,1,3,67,67,67,95,1,3,2]},
               columns=['assay','image','roi','dist','xy','cellArea','intensity','adjacency'])
df.loc[df.intensity < 10, ['intensity','xy']] = np.nan
df

您可以将
duplicated&is.null
检查器作为以下内容传递到lambda函数中,而不是使用
drop\u duplicates

df.groupby(['assay','image','roi']).apply(lambda x: x.loc[~(x.duplicated(['intensity']) & x.intensity.isnull())])

您可以将
duplicated&is.null
检查器传递到lambda函数中,而不是使用
drop\u duplicates
,如下所示:

df.groupby(['assay','image','roi']).apply(lambda x: x.loc[~(x.duplicated(['intensity']) & x.intensity.isnull())])