Python 透视表的反求

Python 透视表的反求,python,pandas,Python,Pandas,我有一个数据帧(例如,df_p),它已经转换成一个透视表: import pandas as pd df = pd.DataFrame({'start_year':[2000, 2001, 2002], 'end_year':[2010, 2011, 2012], 'price':[1.0, 2.0, 3.0]}) # end_year price start_year # 0 2010 1.0

我有一个数据帧(例如,
df_p
),它已经转换成一个透视表:

import pandas as pd
df = pd.DataFrame({'start_year':[2000, 2001, 2002],
                  'end_year':[2010, 2011, 2012],
                  'price':[1.0, 2.0, 3.0]})

#    end_year  price  start_year
# 0      2010    1.0        2000
# 1      2011    2.0        2001
# 2      2012    3.0        2002

df_p = df.pivot('start_year', 'end_year', 'price')

# end_year    2010  2011  2012
# start_year                  
# 2000         1.0   NaN   NaN
# 2001         NaN   2.0   NaN
# 2002         NaN   NaN   3.0
如何将
df\u p
转换回
df

stack

melt
+
dropna
(但不能保证在任何情况下都能正常工作)


你想保留
NaN
条目吗?@PatrickO'Connor不,我不想要
df_p.stack().reset_index(name='price')

   start_year  end_year  price
0        2000      2010    1.0
1        2001      2011    2.0
2        2002      2012    3.0
df_p.reset_index().melt('start_year', value_name='price').dropna()
 
   start_year end_year  price
0        2000     2010    1.0
4        2001     2011    2.0
8        2002     2012    3.0