Панды добавляют новые столбцы в подзаголовках обратно на основной фрейм данных - PullRequest
0 голосов
/ 08 ноября 2018

У меня датафрейм выглядит следующим образом:

 ids    value   
  1      0.1
  1      0.2
  1      0.14   
  2      0.22
    ....

Я пытаюсь перебрать все идентификаторы и вычислить новые столбцы для каждого идентификатора.

for id, row in df.groupby('ids'):
    x = row.loc[0, 'value']

    for i in range (len(row)):
        row.loc[i, 'new_col_1'] = i * x
        row.loc[i, 'new_col_2'] = i * x * 10

Моя цель - добавить2 новых столбца для каждого идентификатора возвращаются к исходному фрейму данных, поэтому мой df будет выглядеть так:

 ids    value    new_col_1     new_col_2
  1      0.1       0              0
  1      0.2       0.2            2
  1      0.14      0.28           2.8
  2      0.22      0              0
     ....

1 Ответ

0 голосов
/ 08 ноября 2018

cumcount

С небольшим количеством вещания Numpy.

  • cumcount получает ваш for i in range(len(df)) бит

    df.groupby('ids').cumcount()
    
    0    0
    1    1
    2    2
    3    0
    dtype: int64
    

c = df.groupby('ids').cumcount()
v = df.value

df.join(
    pd.DataFrame(
      (c.values * v.values)[:, None] * [1, 10],
      df.index,
  ).rename(columns=lambda x: f"new_col_{x + 1}")
)

   ids  value  new_col_1  new_col_2
0    1   0.10       0.00        0.0
1    1   0.20       0.20        2.0
2    1   0.14       0.28        2.8
3    2   0.22       0.00        0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...