Python - Pandas - 将具有特定子集的列转换为行

时间:2018-04-24 16:24:41

标签: python pandas dataframe

我的数据框如下所示,包含日期,价格和序列号。

+----------+--------+--------+
|   Date   | Price  | Serial |
+----------+--------+--------+
| 2/1/1996 | 0.5909 |      1 |
| 2/1/1996 | 0.5711 |      2 |
| 2/1/1996 | 0.5845 |      3 |
| 3/1/1996 | 0.5874 |      1 |
| 3/1/1996 | 0.5695 |      2 |
| 3/1/1996 |  0.584 |      3 |
+----------+--------+--------+

我想让它看起来像这样,串行成为列名,数据将自己排序到正确的日期行和串行列。

+----------+--------+--------+--------+
|   Date   |   1    |   2    |   3    |
+----------+--------+--------+--------+
| 2/1/1996 | 0.5909 | 0.5711 | 0.5845 |
| 3/1/1996 | 0.5874 | 0.5695 |  0.584 |
+----------+--------+--------+--------+

我知道我可以通过循环执行此操作,但只是想知道是否有更有效的方法来执行此操作?

感谢您的帮助。同样好奇的是,如果有更好的方法来粘贴这些表而不是在我的questions = x

中附加图像

1 个答案:

答案 0 :(得分:0)

您可以使用pandas.pivot_table

res = df.pivot_table(index='Date', columns='Serial', values='Price', aggfunc=np.sum)\
        .reset_index()

res.columns.name = ''

       Date       1       2       3
0  2/1/1996  0.5909  0.5711  0.5845
1  3/1/1996  0.5874  0.5695  0.5840