2016-09-01 4 views
4

это моя проблемадисплея отсутствуют значения определенного столбца на основе другого конкретного столбца

Скажем, у меня есть 2 колонки на dataframe которые выглядят следующим образом:

Type | Killed 
_______ |________ 
Dog  1 
Dog  nan 
Dog  nan 
Cat  4 
Cat  nan 
Cow  1 
Cow  nan 

Я хотел бы, чтобы отобразить все недостающие значение в Убитый в соответствии с типом и пересчитывать их

Мой результат желание будет выглядеть примерно так:

Type | Sum(isnull) 
Dog  2 
Cat  1 
Cow  1 

Есть ли все-таки показать это?

ответ

3

Вы можете использовать boolean indexing с value_counts:

print (df.ix[df.Killed.isnull(), 'Type'].value_counts().reset_index(name='Sum(isnull)')) 

    index Sum(isnull) 
0 Dog   2 
1 Cow   1 
2 Cat   1 

или агрегировать size, кажется, быстрее:

print (df[df.Killed.isnull()] 
      .groupby('Type')['Killed'] 
      .size() 
      .reset_index(name='Sum(isnull)')) 

    Type Sum(isnull) 
0 Cat   1 
1 Cow   1 
2 Dog   2 

Timings:

df = pd.concat([df]*1000).reset_index(drop=True) 

In [30]: %timeit (df.ix[df.Killed.isnull(), 'Type'].value_counts().reset_index(name='Sum(isnull)')) 
100 loops, best of 3: 5.36 ms per loop 

In [31]: %timeit (df[df.Killed.isnull()].groupby('Type')['Killed'].size().reset_index(name='Sum(isnull)')) 
100 loops, best of 3: 2.02 ms per loop 
1

Я могу вам как isnull и notnull

isnull = np.where(df.Killed.isnull(), 'isnull', 'notnull') 
df.groupby([df.Type, isnull]).size().unstack() 

enter image description here

Смежные вопросы