由pivot_table引入的熊猫NaN

时间:2016-09-22 06:58:47

标签: python pandas pivot pivot-table nan

我有一个表格,其中包含来自世界银行API的一些国家/地区的KPI。这看起来像no nan values present。如您所见,没有纳米值存在。

但是,我需要转动此表以将int引入正确的形状以进行分析。一个pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id']) 对于一些例如TUERKEI这很好用:

for turkey it works 但对于大多数国家而言,引入了奇怪的纳米值。我该如何防止这种情况?

strange nan values

3 个答案:

答案 0 :(得分:8)

我认为最好的理解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

答案 1 :(得分:0)

根据文档:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html

数据透视图方法返回:重塑的DataFrame。

现在,您可以使用fillna方法将na值替换为所需的值。

示例:

我的PIVOT返回以下dataFrame:

PIVOT RETURN DATA TYPE 现在,我想将Nan替换为0,我将把fillna()方法应用于数据透视方法返回的数据框中

DATA FRAME RETURN AFTER REPLACING Nan values with 0

答案 2 :(得分:0)

我会这样做:

piv_out = pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id'])

print(piv_out.to_string(na_rep=""))