如何作为起始点进行迭代

2024-04-25 01:52:49 发布

您现在位置:Python中文网/ 问答频道 /正文

早上好,(初学者不好)

我有以下数据帧:

enter image description here

我的目标是在第一次出现一个新的ID时,让VALUE列是该行的1000*DELTA。对于该ID的所有连续行,该值是当前行的增量*上方的行的值。你知道吗

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

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

很不幸,我不知道如何以我描述的方式进行迭代。任何形式的帮助或提示将不胜感激!你知道吗


Tags: 数据id目标value方式增量形式delta
1条回答
网友
1楼 · 发布于 2024-04-25 01:52:49

方法如下。数据帧示例:

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

^{}要获取第一个ID出现的索引:

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

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

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

相关问题 更多 >