创建或使用其他数据框
问题描述:
我现在有一个熊猫数据帧寻找这样的修改数据框:创建或使用其他数据框
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
- 以上项目结束起始于
2006-01-04
并结束于2006-01-07
。
我想总结列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
答
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