首页 > 解决方案 > 用于时间序列数据的 Pandas Melt 函数

问题描述

我正在尝试融化我的 pandas 数据框,但我不确定如何正确分配变量。我查看了堆栈上的其他示例,但似乎找不到与此匹配的变体。我的数据框(df1)如下所示:

[IN]: df1
[OUT]:
             40025.0    21201.0       30061.0   46021.0
date                
2020-08-08  0.000861    0.001292    0.000287    0.001177
2020-08-09  0.001147    0.001290    0.000344    0.001204
2020-08-10  0.001431    0.001288    0.000401    0.001231

每列用于不同的 FIPS 代码,值是每天的 Covid 病例数(此数据已为将来的聚类处理),索引是日期时间索引(天)。数据框为 804 列 x 470 行。我希望我的数据框看起来像这样:

在此处输入图像描述

我知道如果我将“日期”保留为一列(而不是索引),我可以通过以下方式完成这项工作:

df1 =df1.melt(id_vars="date", var_name="FIPS", value_name="Covid_cases")

但如果我这样做,那么在尝试将“日期”列转换为索引时会出现错误。我需要它作为日期时间索引的索引,因为我要对时间序列数据进行 kmeans 聚类,然后绘制时间序列聚类。任何投入将不胜感激!谢谢!

标签: pythonpandasdataframe

解决方案


或者您可以通过stack.

df = (
    df.stack()
    .reset_index()
    .rename(columns={'level_1': 'FIPS', 0: 'Covid_cases'})
    .set_index('date')
)


推荐阅读