ホームページ  >  記事  >  バックエンド開発  >  Melt 関数と辞書を使用して Pandas DataFrame を再形成する方法

Melt 関数と辞書を使用して Pandas DataFrame を再形成する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-22 07:08:10892ブラウズ

How to Reshape a Pandas DataFrame Using the Melt Function and a Dictionary?

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>

答え:

メルト関数を使用してデータフレームを再形成するには、次の手順に従います:

  1. データフレームを溶かします:メルト関数を使用してデータフレームをワイド形式に変換します。これにより、列が行に変換され、変更を加えない列を指定するために id_vars パラメーターが使用されます。

    m = pd.melt(df, id_vars=['Year'], var_name='Name')
  2. マッピング ディクショナリを作成します。列名とグループ間のマッピングを作成するための辞書 d names.

    d2 = {}
    for k, v in d.items():
        for item in v:
            d2[item] = k
  3. Add 'Group': 新しく作成した辞書 d2 を 'Name' 列にマップして、'Group' 列を追加します。

    m['Group'] = m['Name'].map(d2)
  4. 移動'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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。