Pandas Melt 関数: 分析用のデータフレームの再構成
質問:
次のデータフレームを考えてみましょう。複数の列とDictionary:
df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014] ]、列=['エイミー'、'ボブ'、'カール'、'クリス'、'ベン'、 'その他', '年'])<br>
d = {'A': ['エイミー'], 'B': ['ボブ', 'ベン']、'C': ['カール'、 'Chris']}<br>
列が結合されてグループ化されている次の構造に似るようにデータフレームを再形成するにはどうすればよいですか?
グループ名 年 値<br> 0 A Amy 2013 2<br> 1 A Amy 2014 9<br> 2 B Bob 2013 4<br> 3 B Bob 2014 2<br> 4 B Ben 2013 1<br> 5 B Ben 2014 5<br> 6 C カール 2013 7<br> 7 C カール 2014 4<br> 8 C クリス 2013 8<br> 9 C クリス 2014 5<br>10 その他 2013 3<br>11 その他 2014 6<br>
答え:
メルト関数を使用してデータフレームを再形成するには、次の手順に従います:
データフレームを溶かします:メルト関数を使用してデータフレームをワイド形式に変換します。これにより、列が行に変換され、変更を加えない列を指定するために id_vars パラメーターが使用されます。
m = pd.melt(df, id_vars=['Year'], var_name='Name')
マッピング ディクショナリを作成します。列名とグループ間のマッピングを作成するための辞書 d names.
d2 = {} for k, v in d.items(): for item in v: d2[item] = k
Add 'Group': 新しく作成した辞書 d2 を 'Name' 列にマップして、'Group' 列を追加します。
m['Group'] = m['Name'].map(d2)
移動'Other': 'Other' の値を 'Name' 列から 'Group' 列に移動します。
mask = m['Name'] == 'Other' m.loc[mask, 'Name'] = '' m.loc[mask, 'Group'] = 'Other'
結果のデータフレームには、目的のフラット化された構造が含まれます。
print(m) Year Name value Group 0 2013 Amy 2 A 1 2014 Amy 9 A 2 2013 Bob 4 B 3 2014 Bob 2 B 4 2013 Carl 7 C ... ... ... ... ... 7 2014 Chris 5 C 8 2013 Ben 1 B 9 2014 Ben 5 B 10 2013 3 Other 11 2014 6 Other
以上がMelt 関数と辞書を使用して Pandas DataFrame を再形成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。