избегать для l oop для pandas кадра данных для вычисления каждого идентификатора python - PullRequest
0 голосов
/ 14 июля 2020

Я работаю с python в кадре данных pandas, где мне нужно выполнить некоторые вычисления:

enter image description here enter image description here

As you can see in those images, I have a lot of data with different id. What I need to do is to calculate per each id different operations, so what I am doing right now is this:

array_id_ad_hs = df['column_id'].unique()
for id in array_id_ad_hs: 
    df_history = df[df['column_id']==id]
    df_history['new_column'] = 1000 -  df_history['temporary_sum'].cumsum()

Там это лучший / более быстрый способ сделать эти операции?

1 Ответ

1 голос
/ 14 июля 2020

Вы можете использовать groupby

import pandas as pd
import numpy as np
df = pd.DataFrame({'id': np.repeat(['A', 'B', 'C'], 5), 'x': np.random.normal(300, 100, 15)})
df['y'] = 1000 +  df.groupby('id')['x'].cumsum()
print(df)

выходы

   id           x            y
0   A  265.331439  1265.331439
1   A  392.658450  1657.989889
2   A  223.808512  1881.798401
3   A  209.223416  2091.021817
4   A  253.292921  2344.314738
5   B  425.387435  1425.387435
6   B  171.922392  1597.309827
7   B  198.998873  1796.308699
8   B  168.298701  1964.607401
9   B  347.075096  2311.682497
10  C  374.944209  1374.944209
11  C  310.802718  1685.746927
12  C  361.621695  2047.368623
13  C  250.134388  2297.503011
14  C  294.190045  2591.693056
...