删除行按列分组,所有行在panda / python的另一列中都有nan值

时间:2017-10-21 18:22:24

标签: python pandas dataframe

我想按一列(id)进行分组,并检查其他列day的所有值是否为“nan”,并在这种情况下删除所有相应的行。

我是这样的:

output = entry.iloc[entry.groupby['id'].day.isnull()] 

但它不起作用......

entry = pd.DataFrame([ [1,],[1,],[1,],[1,],[2,3],[2,],[2,4]],columns=['id','day'])
output = pd.DataFrame([[2,3],[2,],[2,4]],columns=['id','day'])

3 个答案:

答案 0 :(得分:1)

groupbytransformcount

entry.loc[entry.groupby('id')['day'].transform('count').nonzero()]
Out[154]: 
   id  day
4   2  3.0
5   2  NaN
6   2  4.0

答案 1 :(得分:0)

您可以直接使用groupby with filter

$chatArray = array(
 array(
     'chatusername' => 'Troy',
     'chatuserid' => '123',
     'chatmessage' => 'Hello World'
 ),

 array(
     'chatusername' => 'Nick',
     'chatuserid' => '124',
     'chatmessage' => 'Testing'
 ));

答案 2 :(得分:0)

使用groupby后跟filter来检查日期大于0的id组。

entry.groupby('id').filter(lambda group: group.day.sum()>0)

结果:

   id  day
4   2  3.0
5   2  NaN
6   2  4.0