熊猫独特的价值观如何以起点为起点

时间:2018-12-07 19:09:28

标签: python pandas numpy stock

早上好,(初学者不好)

我有以下熊猫数据框:

enter image description here

我的目标是在第一时间出现一个新ID,然后将VALUE COLUMN设为该行的1000 * DELTA。对于该ID的所有连续行,VALUE就是上面的行的值*当前行的DELTA。

我尝试通过获取所有唯一ID值:

a=stocks2.ID.unique()
a.tolist()

不幸的是,它确实有效,我真的不知道如何按照我的描述进行迭代。任何帮助或技巧都将不胜感激!

1 个答案:

答案 0 :(得分:1)

执行此操作的方法如下。数据框示例:

df = pd.DataFrame({'ID':[1,1,5,3,3], 'delta':[0.3,0.5,0.2,2,4]}).assign(value=[2,5,4,2,3])
print(df)
   ID  delta   value
0   1    0.3     2
1   1    0.5     5
2   5    0.2     4
3   3    2.0     2
4   3    4.0     3

将上面的行中的value填充为:

df['value'] = df.shift(1).delta * df.shift(1).value

Groupby获取第一个ID出现的索引:

w = df.groupby('ID', as_index=False).nth(0).index.values

然后使用value中的索引计算w的值:

df.loc[w,'value'] = df.loc[w,'delta'] * 1000 

此示例给出以下内容:

 ID  delta   value
0   1    0.3   300.0
1   1    0.5     0.6
2   5    0.2   200.0
3   3    2.0  2000.0
4   3    4.0     4.0
相关问题