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