パンダ: 異なる長さの辞書から dataframe を作成する
次の基本構文を使用して、エントリの長さが異なるディクショナリから pandas DataFrame を作成できます。
import pandas as pd df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))
この構文は、辞書配列のリストを pandas シリーズのリストに変換します。
これにより、pandas DataFrame を作成し、NaN 値を入力するだけで、結果として得られる DataFrame の各列が同じ長さになるようにすることができます。
次の例は、この構文を実際に使用する方法を示しています。
例: 異なる長さの辞書から Pandas DataFrame を作成する
さまざまな長さのエントリを含む次の辞書があるとします。
#create dictionary whose entries have different lengths some_dict = dict(A=[2, 5, 5, 7, 8], B=[9, 3], C=[4, 4, 2]) #view dictionary print (some_dict) {'A': [2, 5, 5, 7, 8], 'B': [9, 3], 'C': [4, 4, 2]}
from_dict()関数を使用してこの辞書を pandas DataFrame に変換しようとすると、エラーが発生します。
import pandas as pd #attempt to create pandas DataFrame from dictionary df = pd. DataFrame . from_dict (some_dict) ValueError : All arrays must be of the same length
ディクショナリ内のすべての配列が同じ長さでなければならないことを示すエラーが表示されます。
このエラーを回避するには、次の構文を使用して Dictionary を DataFrame に変換します。
import pandas as pd #create pandas DataFrame from dictionary df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()])) #view DataFrame print (df) ABC 0 2 9.0 4.0 1 5 3.0 4.0 2 5 NaN 2.0 3 7 NaN NaN 4 8 NaN NaN
pandas DataFrame を正常に作成でき、各列が同じ長さになるように NaN 値が埋め込まれていることに注意してください。
これらの NaN 値を他の値 (ゼロなど) に置き換える場合は、次のようにreplace()関数を使用できます。
#replace all NaNs with zeros
df. replace (np. nan , 0, inplace= True )
#view updated DataFrame
print (df)
ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 0.0 2.0
3 7 0.0 0.0
4 8 0.0 0.0
各 NaN 値はゼロに置き換えられていることに注意してください。
replace()関数を自由に使用して、NaN 値を任意の値に置き換えてください。
追加リソース
次のチュートリアルでは、パンダで他の一般的な操作を実行する方法を説明します。
Pandas: DataFrame を辞書に変換する方法
Pandas: 辞書を使用して列の名前を変更する方法
Pandas: 辞書を使用して NaN 値を埋める方法