如何融合 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中文網其他相關文章!