世界銀行APIからのいくつかの国とそのKPIを含むテーブルがあります。これは次のようになります 。ご覧のとおり、nan値は存在しません。
ただし、intを分析に適した形にするために、このテーブルをピボットする必要があります。 A pd.pivot_table(countryKPI, index=['germanCName'], columns=['indicator.id'])
たとえば、 TUERKEI
これは問題なく機能します:
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
ドキュメントによると:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html
ピボットメソッドは次を返します:データフレームの形状を変更しました。
これで、fillnaメソッドを使用して、na値を任意の値に置き換えることができます。
例:
私のピボットは以下のdataFrameを返します: