从宽数据重塑:
在数据操作领域,将宽数据集重塑为长数据集是数据的一项关键操作整合和分析。考虑以下场景:
您在 pandas 中有一个数据框,其中包含变量 AA、BB 和 CC 的每日值,并按日期索引。
+---------+----+----+----+ | date | AA | BB | CC | +---------+----+----+----+ | 05/03 | 1 | 2 | 3 | | 06/03 | 4 | 5 | 6 | | 07/03 | 7 | 8 | 9 | | 08/03 | 5 | 7 | 1 | +---------+----+----+----+
您希望将此数据转换为格式,其中每行代表一个变量和日期,如下所示:
+------+---------+--------+ | var | date | value | +------+---------+--------+ | AA | 05/03 | 1 | | AA | 06/03 | 4 | | AA | 07/03 | 7 | | AA | 08/03 | 5 | | BB | 05/03 | 2 | | BB | 06/03 | 5 | | BB | 07/03 | 8 | | BB | 08/03 | 7 | | CC | 05/03 | 3 | | CC | 06/03 | 6 | | CC | 07/03 | 9 | | CC | 08/03 | 1 | +------+---------+--------+
这种重组是数据集成中的典型任务,将使您能够合并此数据框与另一个具有匹配日期和初始列名称(AA、BB、CC)的数据框。
方法:Pandas 的 Melt 函数
幸运的是,pandas 提供了一种简单的方法执行此转换:pandas.melt 或 DataFrame.melt。这是一个示例:
import pandas as pd df = pd.DataFrame({ 'date' : ['05/03', '06/03', '07/03', '08/03'], 'AA' : [1, 4, 7, 5], 'BB' : [2, 5, 8, 7], 'CC' : [3, 6, 9, 1] }) df.set_index('date', inplace=True) dfm = df.reset_index().melt(id_vars='date')
这会将您的数据框转换为所需的长格式:
date variable value 0 05/03 AA 1 1 06/03 AA 4 2 07/03 AA 7 3 08/03 AA 5 4 05/03 BB 2 5 06/03 BB 5 6 07/03 BB 8 7 08/03 BB 7 8 05/03 CC 3 9 06/03 CC 6 10 07/03 CC 9 11 08/03 CC 1
以上是如何将宽 Pandas DataFrame 转换为长格式,其中值代表变量和日期?的详细内容。更多信息请关注PHP中文网其他相关文章!