2016-09-22 2 views
2

У меня есть таблица, содержащая некоторые страны и их KPI из API мировых банков. это выглядит как no nan values present. Как вы можете видеть, никакие значения nan отсутствуют.Pandas NaN введено pivot_table

Однако мне нужно повернуть эту таблицу, чтобы ввести int в нужную форму для анализа. A pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id']) Для некоторых, например, TUERKEI это работает просто отлично:

for turkey it works Но для большинства стран странные значения nan введены. Как я могу это предотвратить?

strange nan values

ответ

4

Я думаю, что лучше понять pivoting в небольшой выборке:

import pandas as pd 
import numpy as np 

countryKPI = pd.DataFrame({'germanCName':['a','a','b','c','c'], 
          'indicator.id':['z','x','z','y','m'], 
          'value':[7,8,9,7,8]}) 

print (countryKPI) 
    germanCName indicator.id value 
0   a   z  7 
1   a   x  8 
2   b   z  9 
3   c   y  7 
4   c   m  8 

print (pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id'])) 
      value    
indicator.id  m x y z 
germanCName      
a    NaN 8.0 NaN 7.0 
b    NaN NaN NaN 9.0 
c    8.0 NaN 7.0 NaN 

Если необходимо заменить NaN на 0 параметр добавить fill_value:

print (countryKPI.pivot_table(index='germanCName', 
           columns='indicator.id', 
           values='value', 
           fill_value=0)) 
indicator.id m x y z 
germanCName    
a    0 8 0 7 
b    0 0 0 9 
c    8 0 7 0 
+0

Действительно, этот пример хорошо. Но как я могу предотвратить значения NaN? –

+0

Хорошо, что вам нужно? 'NaN' заменить на' 0'? – jezrael

+0

Я вижу, что проблема в том, что в моих данных для некоторых стран не все показатели были представлены ... :( –