当 Pandas 面临复杂的数据重组任务时,melt 函数成为一个强大的工具。它将数据帧从具有多列的宽格式无缝转换为具有较少列的长格式。
在实际场景中,考虑需要重塑的数据帧:
df = pd.DataFrame([[2, 4, 7, 8, 1, 3, 2013], [9, 2, 4, 5, 5, 6, 2014]], columns=['Amy', 'Bob', 'Carl', 'Chris', 'Ben', 'Other', 'Year'])
Amy Bob Carl Chris Ben Other Year 0 2 4 7 8 1 3 2013 1 9 2 4 5 5 6 2014
要转换此将数据帧转换为更结构化的格式,您可以使用熔化函数:
m = pd.melt(df, id_vars=['Year'], var_name='Name')
此操作生成以下内容dataframe:
Year Name value 0 2013 Amy 2 1 2014 Amy 9 2 2013 Bob 4 3 2014 Bob 2 4 2013 Carl 7 ...
但是,所需的输出包括一个名为“Group”的附加列。要获得此结果,请重塑字典:
d2 = {} for k, v in d.items(): for item in v: d2[item] = k
现在可以使用“组”列更新数据框:
m['Group'] = m['Name'].map(d2)
最后,从“名称”中移动“其他”列到“组”列:
mask = m['Name'] == 'Other' m.loc[mask, 'Name'] = '' m.loc[mask, 'Group'] = 'Other'
生成的数据框与所需的完美对齐输出:
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 ...
通过这种方式,Pandas Melt 函数为数据科学家提供了一种多功能且高效的机制来重塑数据帧,使他们能够轻松地转换和重新组织数据以用于各种分析和可视化目的。
以上是Pandas 的 Melt 函数如何将宽数据帧重塑为具有附加列的所需长格式?的详细内容。更多信息请关注PHP中文网其他相关文章!