我有以下结构,但更大
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
答案 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