2016-03-28 31 views
1

我有一个数据帧,我想通过groupbybq_market_id然后检查是否有每个组中bq_back_price任何NaN值如果是,那么True每组如果没有那么False每个组。检查该组是否NaN值

bq_selection_id bq_balance bq_market_id bq_back_price 
0   45094462  185.04  7278437   1.97 
1   45094462  185.04  7278437   1.97 
2   45094463  185.04  7278437   3.05 
3   45094463  185.04  7278437   3.05 
4   45094464  185.04  7278437   5.80 
5   45094464  185.04  7278437   5.80 
6   45094466  185.04  7278437   200.00 
7   45094466  185.04  7278437   200.00 
8   45094465  185.04  7278437   NaN 
9   45094465  185.04  7278437   NaN 

我该怎么做?我尝试了以下,但它没有奏效。

bb.groupby('bq_market_id')['bq_back_price'].isnull().any() 

回答

2

我认为你可以使用apply

print bb.groupby('bq_market_id')['bq_back_price'].apply(lambda x: x.isnull().any()) 
bq_market_id 
7278437 True 
Name: bq_back_price, dtype: bool 

样品(在bq_market_id列中的某些值发生改变):

print bb 
    bq_selection_id bq_balance bq_market_id bq_back_price 
0   45094462  185.04    1   1.97 
1   45094462  185.04    1   1.97 
2   45094463  185.04    1   3.05 
3   45094463  185.04  7278437   3.05 
4   45094464  185.04  7278437   5.80 
5   45094464  185.04  7278437   5.80 
6   45094466  185.04  7278437   200.00 
7   45094466  185.04  7278437   200.00 
8   45094465  185.04  7278437   NaN 
9   45094465  185.04  7278437   NaN 

print bb.groupby('bq_market_id')['bq_back_price'].apply(lambda x: x.isnull().any()) 
bq_market_id 
1   False 
7278437  True 
Name: bq_back_price, dtype: bool