Python 通过将列转换为单列中包含的标签来重塑数据帧

Python 通过将列转换为单列中包含的标签来重塑数据帧,python,pandas,Python,Pandas,我正在尝试将df打印到csv,以便稍后导出到Tableau可视化。我可以使用列的标签在Pandas中做我想做的事情,但是,为了在Tableau中轻松工作,我需要以特定的格式显示数据 这是我的朋友: company size year Australia Canada Caribbean 1 USAA 315.0 1997 200.0 115.0 0 2 PIMCO 165.0 1997

我正在尝试将df打印到csv,以便稍后导出到Tableau可视化。我可以使用列的标签在Pandas中做我想做的事情,但是,为了在Tableau中轻松工作,我需要以特定的格式显示数据

这是我的朋友:

    company   size   year  Australia  Canada  Caribbean  
1      USAA  315.0   1997      200.0   115.0          0          
2     PIMCO  165.0   1997      165.0     0.0          0     
3  Swiss Re   18.0   1997        5.0    10.0        3.0 
我想重新塑造它,使它看起来或多或少像这样:

    company   size   year   value      value 
1      USAA  315.0   1997   Australia  200.0        
2      USAA  315.0   1997   Canada     115.0   
3     PIMCO  165.0   1997   Australia  165.0           
4  Swiss Re   18.0   1997   Australia    5.0
5  Swiss Re   18.0   1997   Canada      10.0       
6  Swiss Re   18.0   1997   Caribbean    3.0

有没有一种方法可以在熊猫身上轻松做到这一点,而不需要创建多个GroupBy

我也遇到了类似的问题,在尝试了多种方法之后,这是我发现的最具python风格的方法:

df = pd.melt(df, id_vars=['company', 'size', 'year'])
df = df[df.value != 0]
希望能有帮助