【发布时间】:2019-06-26 20:20:48
【问题描述】:
我有一个熊猫数据框:
import pandas as pd
import numpy as np
d={'ID':['A1','A1','A2','A2','A2'], 'date':['Jan 1','Jan7','Jan4','Jan5','Jan12'],'value':[10,12,3,5,2]}
df=pd.DataFrame(data=d)
df
ID date value
0 A1 Jan 1 10
1 A1 Jan7 12
2 A2 Jan4 3
3 A2 Jan5 5
4 A2 Jan12 2
...
An
我想重塑它,使日期列成为主列,范围从min(date) 到max(date) 顺序(在本例中为 1 月 1 日到 1 月 12 日)。每个额外的列将是一个单独的 ID,并且值将对应于相应的日期。
我还想用np.linspace(value at first date, value at next date, number of days)“填充”空白,从第一个日期到第一个条目的任何日期都保持不变。
最后,我想:
f={'date':['Jan1','Jan2','Jan3','Jan4','Jan5','Jan6','Jan7','Jan8','Jan9','Jan10','Jan11','Jan12'],
'A1':[10,10.3,10.7,11,11.3,11.7,12,12,12,12,12,12],
'A2':[3,3,3,3,5,4.6,4.1,3.7,3.3,2.9,2.4,2]}
df2=pd.DataFrame(data=f)
df2
date A1 A2 ... An
0 Jan1 10.0 3.0
1 Jan2 10.3 3.0
2 Jan3 10.7 3.0
3 Jan4 11.0 3.0
4 Jan5 11.3 5.0
5 Jan6 11.7 4.6
6 Jan7 12.0 4.1
7 Jan8 12.0 3.7
8 Jan9 12.0 3.3
9 Jan10 12.0 2.9
10 Jan11 12.0 2.4
11 Jan12 12.0 2.0
我尝试使用 numpy.linspace 生成序列,但是当我尝试附加额外的值时,我没有得到任何值:
A2 = [np.linspace(10,12,10)].append([[12]*4])
和
np.linspace(10,12,8).append([[12]*5])
给我:
AttributeError: 'numpy.ndarray' object has no attribute 'append'
我正在考虑循环遍历特定元素,但不知道最后如何将它们连接在一起。
任何建议。
【问题讨论】:
-
这是支点吗?
-
将使用正确的系列值透视填充日期吗?
-
为什么
Jan7不是12forA1在您的预期输出中? -
@Erfan 你是对的,问题已更新