首页 > 解决方案 > 将不同的列值拆分为多列

问题描述

我在以下示例中有一个时间序列数据框:

Date         Ticker      Price
2018-01-01    AAA        100
2018-01-01    BBB        200
2018-01-01    CCC        1000
2018-01-01    DDD        3000
2018-01-02    BBB        201
2018-01-02    CCC        1001

我想获得“Ticker”列的唯一值并将唯一的代码转换为数据框列。我的数据框应该如下所示

Date          AAA      BBB    CCC    DDD
2018-01-01    100      200    1000   3000
2018-01-02    NaN      201    1001   NaN

我对 Python 有点陌生,但还没有找到绕过它的方法。任何人都可以提出一个有效的解决方案,因为我一次处理大约 1M 这样的行并且需要一个运行速度更快的解决方案。谢谢你。

标签: python-3.xpandas

解决方案


您可以使用pivot_table

df = pd.pivot_table(df, values = 'Price', index='Date', columns = 'Ticker').reset_index().rename_axis(None, axis=1)

数据框:

         Date Ticker  Price
0  2018-01-01    AAA    100
1  2018-01-01    BBB    200
2  2018-01-01    CCC   1000
3  2018-01-01    DDD   3000
4  2018-01-02    BBB    201
5  2018-01-02    CCC   1001

输出:

              Date    AAA    BBB     CCC     DDD
0       2018-01-01  100.0  200.0  1000.0  3000.0
1       2018-01-02    NaN  201.0  1001.0     NaN

推荐阅读