pandas unique values 如何以迭代为起点
pandas unique values how to iterate as a starting point
早上好,(初学者不好)
我有以下 pandas 数据框:
我的目标是在第一次出现新 ID 时让 VALUE COLUMN 为该行的 1000* DELTA。对于该 ID 的所有连续行,VALUE 是上一行的 VALUE * 当前行的 DELTA。
我尝试获取所有唯一 ID 值:
a=stocks2.ID.unique()
a.tolist()
它有效,不幸的是我真的不知道如何按照我描述的方式进行迭代。任何形式的帮助或提示将不胜感激!
一种方法如下。示例数据框:
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
并使用 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
早上好,(初学者不好)
我有以下 pandas 数据框:
我的目标是在第一次出现新 ID 时让 VALUE COLUMN 为该行的 1000* DELTA。对于该 ID 的所有连续行,VALUE 是上一行的 VALUE * 当前行的 DELTA。
我尝试获取所有唯一 ID 值:
a=stocks2.ID.unique()
a.tolist()
它有效,不幸的是我真的不知道如何按照我描述的方式进行迭代。任何形式的帮助或提示将不胜感激!
一种方法如下。示例数据框:
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
并使用 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