Pandas 使用多个索引重塑数据帧

Pandas 使用多个索引重塑数据帧,pandas,dataframe,pivot,reshape,transpose,Pandas,Dataframe,Pivot,Reshape,Transpose,我需要重塑我的数据框架,使其宽而不是长,将每个日期显示为列标题和状态和变量名的两个索引。我尝试过使用转置()、熔化()、堆栈()、取消堆栈()、枢轴()和设置索引()都没有成功。请告知 我最接近的解决方案是forecast。设置_索引(['State','Revenue','YoY\u Change])或forecast。设置_索引(['Date'])。T以转换日期列,但两者都不是正确的解决方案 我的数据如下所示: 我需要它看起来像这样: 这是melt,后面是pivot: (df.melt([

我需要重塑我的数据框架,使其宽而不是长,将每个日期显示为列标题和状态和变量名的两个索引。我尝试过使用转置()、熔化()、堆栈()、取消堆栈()、枢轴()和设置索引()都没有成功。请告知

我最接近的解决方案是
forecast。设置_索引(['State','Revenue','YoY\u Change])
forecast。设置_索引(['Date'])。T
以转换日期列,但两者都不是正确的解决方案

我的数据如下所示:

我需要它看起来像这样:


这是
melt
,后面是
pivot

(df.melt(['State','Date'])
   .pivot_table(index=['State', 'variable'], columns='Date', values='value', aggfunc='first')
)

我收到一个错误,没有可聚合的数值类型。@JCM将
agg_func='first'
传递到
pivot\u table
。Quang,您能帮助我了解此解决方案的工作原理吗?我不明白为什么我们要将状态和日期融为一体,然后在没有称为“变量”和“值”的变量时将“变量”和“值”传递给pivot_table()。打印
df.melt(['state','date'])
以查看数据如何变化。基本上,它将
状态
日期
保留为列,并将
收入
年变化
放在名为
变量
的新列中,同时将值放在
列中。接下来是透视表。您可以从文档中阅读有关
melt
pivot\u表的信息。