【问题标题】:Create or modify DataFrame using another DataFrame使用另一个 DataFrame 创建或修改 DataFrame
【发布时间】:2017-02-08 04:13:20
【问题描述】:

我目前有一个如下所示的 Pandas DataFrame:

   DATESTAMP   price                name   pct_chg
0  2006-01-02  62.987301            a      0.000000
1  2006-01-03  61.990700            a     -0.015822
2  2006-01-04  62.987301            a      0.016077
3  2006-01-05  62.987301            a      0.000000
4  2006-01-06  61.990700            a     -0.015822
6  2006-01-04  100.1                b      0.000000
7  2006-01-05  100.5                b     -0.015822
8  2006-01-06  100.7                b      0.016077
9  2006-01-07  100.8                b      0.016090

问题是不同的项目(用唯一列 name 指定)具有不同的起源时间以及不同的存活时间

  • 以上项目a 开始于2016-01-02 并结束于2016-01-06
  • 以上项目b 开始于2006-01-04 并结束于2006-01-07

我想在一个新的 DataFrame 中总结 pct_chg 列,将 DATESTAMP 作为索引,并将列从 name 开始。我还希望新 DataFrame 的索引以“最旧”的现有日期记录开始(在本例中为 2006-01-02)并以“最新”结束(在本例中为 2006-01-07) .

结果会是这样的

            a          b
2006-01-02  0.000000   NaN
2006-01-03  -0.015822  NaN
2006-01-04  0.016077   0.000000
2006-01-05  0.000000   -0.015822
2006-01-06  -0.015822  0.016077
2006-01-07  NaN        0.016090

【问题讨论】:

    标签: python pandas dataframe pivot reshape


    【解决方案1】:

    您可以将set_indexunstack 一起使用:

    print (df.set_index(['DATESTAMP','name'])['pct_chg'].unstack())
    name               a         b
    DATESTAMP                     
    2006-01-02  0.000000       NaN
    2006-01-03 -0.015822       NaN
    2006-01-04  0.016077  0.000000
    2006-01-05  0.000000 -0.015822
    2006-01-06 -0.015822  0.016077
    2006-01-07       NaN  0.016090
    

    pivot 的另一个解决方案:

    print (df.pivot(index='DATESTAMP', columns='name', values='pct_chg'))
    name               a         b
    DATESTAMP                     
    2006-01-02  0.000000       NaN
    2006-01-03 -0.015822       NaN
    2006-01-04  0.016077  0.000000
    2006-01-05  0.000000 -0.015822
    2006-01-06 -0.015822  0.016077
    2006-01-07       NaN  0.016090
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2014-02-06
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多