python - 由pivot_table引入的Pandas NaN

标签 python pandas pivot pivot-table nan

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

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

for turkey it works
但是对于大多数国家来说,引入了奇怪的 nan 值。我怎样才能防止这种情况?

strange nan values

最佳答案

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

如需更换 NaN0添加参数 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

关于python - 由pivot_table引入的Pandas NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39632277/

相关文章:

python - 如何将输出导出到 csv?

python - xlsxwriter 中条件匹配时添加列

sql - 如何创建数据透视查询

python - Go 子进程通信

python - 如何为文本小部件设置字符的最大宽度?

python - 打印两个列表中的值对

python - 使用 < 和 > 在 Pandas 中选择日期期间遇到问题

python - 如何将数据帧从长转换为宽,值在索引中按年份分组?

MySQL 将行转换为动态列数

SQL查询将表分组为表的表?