在1行数据帧中转换Python数据帧,其中列和索引值被分块

时间:2017-05-16 11:51:38

标签: python python-2.7 pandas dataframe

我有以下结构,但更大

    1y   2y   3y
1w  2    8    40
2w  3    10   50 
1m  4    12   60

在python中将它转换为单行数据帧有什么好方法:

         1w/1y  1w/2y  1w/3y  2w/1y  2w/2y  2w/3y  1m/1y  1m/2y  1m/3y
NewIndex  2       8     40     3       10    50     4       12    60

新索引最终将成为日期,因为我将以下数据存储在每个日期的单独CSV中,并且我想将其转换为单个数据框以在其上运行某些统计信息。

非常感谢 Here's the image as the text got misaligned. https://i.stack.imgur.com/K3s7V.png

1 个答案:

答案 0 :(得分:0)

In [16]: x = df.stack()

In [17]: x
Out[17]:
1w  1y     2
    2y     8
    3y    40
2w  1y     3
    2y    10
    3y    50
1m  1y     4
    2y    12
    3y    60
dtype: int64

In [18]: new = pd.DataFrame(x.values, index=x.index.map('/'.join)).T

In [19]: new
Out[19]:
   1w/1y  1w/2y  1w/3y  2w/1y  2w/2y  2w/3y  1m/1y  1m/2y  1m/3y
0      2      8     40      3     10     50      4     12     60

或更好,无需转置:

In [30]: new = pd.DataFrame(x.values[None, :], columns=x.index.map('/'.join), index=[0])

In [31]: new
Out[31]:
   1w/1y  1w/2y  1w/3y  2w/1y  2w/2y  2w/3y  1m/1y  1m/2y  1m/3y
0      2      8     40      3     10     50      4     12     60