уникальные значения панды, как итерировать в качестве отправной точки - PullRequest
0 голосов
/ 07 декабря 2018

Доброе утро, (плохой новичок)

У меня есть следующий фрейм данных панд:

enter image description here

Моя цель - взятьВ первый раз появляется новый идентификатор, и пусть VALUE COLUMN будет 1000 * DELTA этой строки.для всех последовательных строк этого идентификатора VALUE - это VALUE строки выше * DELTA текущей строки.

Я попытался получить все уникальные значения ID:

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

Itработает, к сожалению, я действительно не знаю, как выполнять итерацию, как я описал.Любая помощь или советы будут с благодарностью!

1 Ответ

0 голосов
/ 07 декабря 2018

Способ сделать это будет следующим.Пример кадра данных:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...