Pandas DataFrame をメルトするには、ワイド形式からロング形式へのデータの転置が必要です。 。これは、分析、視覚化、またはその他の目的でデータを操作するときに役立ちます。サンプル問題とそれに対応する解決策を使用して、さまざまな溶解シナリオを詳しく見てみましょう:
質問:次の形式は達成されましたか?
Name Age Subject Grade 0 Bob 13 English C 1 John 16 English B 2 Foo 16 English B 3 Bar 15 English A+ 4 Alex 17 English F 5 Tom 12 English A 6 Bob 13 Math A+ 7 John 16 Math B 8 Foo 16 Math A 9 Bar 15 Math F 10 Alex 17 Math D 11 Tom 12 Math C
解決策:
DataFrame をメルトするには、df.melt() を使用します。 id_vars (元の形式に残す列) と、新しい列名の var_name と value_name を指定します:
pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade')
質問: 問題 1 の DataFrame を溶かして「英語」を除外するにはどうすればよいですかcolumn?
解決策:
df.melt() で value_vars を使用して、メルトする列を指定します。この場合、['Math'] のみが選択されています:
pd.melt(df, id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grade')
質問: 溶けたデータを並べ替えるにはどうすればよいですか?問題 1 のデータをスコア別に表示し、学生をグループ化します。 name?
解決策:
溶けた DataFrame で .groupby() と .agg() を使用して、「Grade」ごとにグループ化し、名前と件名をカンマで連結します。 - 区切られた文字列:
melted_df.groupby('Grade', as_index=False).agg(", ".join)
質問: 溶けた DataFrame をどのように解除すればよいですか?
解決策:
DataFrame.pivot_table を使用する() データフレームの溶解を解除します。値、インデックス、列を指定します。
melted_df.pivot_table('Grades', ['Name', 'Age'], 'Subject', aggfunc='first').reset_index().droplevel(level=0, axis=1)
質問: DataFrame を名前と名前でグループ化するにはどうすればよいですか?科目と成績を次のように区切るcomma?
解決策:
DataFrame を溶かし、.groupby() と .agg() を使用して科目と成績を連結します:
pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Grade').groupby('Name', as_index=False).agg(", ".join)
質問: DataFrame 内のすべての列をメルトするにはどうすればよいですか?
解決策:
Use df.stack( ).reset_index() を使用して、 DataFrame:
pd.melt(df, id_vars=None, var_name='Column', value_name='Value')
これらのソリューションは、さまざまな目的でデータを操作するための pandas DataFrame の融解と融解解除の多用途性を示しています。
以上がデータ操作のために Pandas DataFrame をメルトおよびアンメルトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。