首頁 >後端開發 >Python教學 >如何使用'melt()”函數融化和操作 Pandas DataFrame?

如何使用'melt()”函數融化和操作 Pandas DataFrame?

Susan Sarandon
Susan Sarandon原創
2024-12-17 07:14:24604瀏覽

How Do I Melt and Manipulate Pandas DataFrames Using the `melt()` Function?

如何融合 pandas 資料框?

融合 pandas 資料框涉及將其從具有多列的寬格式轉換為長格式有兩個主列:「變數」和「值」。這可以使用 Melt() 函數來實現。

問題1:融合資料幀以將列轉置為行

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')

這會將原始資料幀轉換為所需的格式,其中包含“姓名」、「年齡」、「科目」及「成績」欄位。 「主題」欄位將包含原始列標題,而「成績」將包含對應的值。

問題 2:過濾融合資料以包含特定欄位

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
filtered_df = df[df['Subject'] == 'Math']

透過過濾融化的資料框,您可以刪除不需要的資料列。在這種情況下,僅保留“Subject”設定為“Math”的行。

問題3:將融合資料分組並依分數排序

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
sorted_df = df.groupby('value').agg({'Name': ', '.join, 'Subject': ', '.join})
sorted_df = sorted_df.sort_values('value')

這會合併「值」列中具有重複值的行,從而導致「名稱”和“主題”列與逗號分隔值。然後對結果進行排序,以按等級升序排列。

問題 4:解熔熔化的資料幀

unmelted_df = df.pivot(index=['Name', 'Age'], columns='Subject', values='Grades')

要將熔化的資料幀轉換回其原始格式,您可以使用pivot()函數。這將按“姓名”和“年齡”列對資料進行分組,並旋轉“主題”列以建立原始資料框形狀。

問題5:將融合資料分組並連接科目與成績

df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
grouped_df = df.groupby('Name').agg({'Subject': ', '.join, 'Grades': ', '.join})

與問題3 類似,這以「名稱」對熔化的資料框進行分組並使用逗號連接“主題”和“成績”列。結果是一個數據框,每人一行,列出了他們的科目和成績。

問題6:融合所有列作為值的資料框

df = df.melt(value_name='Value', var_name='Column')

到將所有列作為值融化資料幀,並從Melt() 函數中省略id_vars 參數。這將建立一個資料框,其中「列」列列出原始列標題,「值」列包含相應的值。

以上是如何使用'melt()”函數融化和操作 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn