Pandas: эффективная замена столбцовых столбцов на репрезентативное значение - PullRequest
1 голос
/ 23 апреля 2020

Я хочу объединить данные в ячейки и выбрать конкретный c агрегат для каждого ячейки.

import pandas as pd
df = pd.DataFrame({ 
  'A': [1, 2, 3, 4],
  'B': [1, 2, 3, 4],
})
groups = pd.cut(df['A'], bins=2, labels=False)
group_reps = df.groupby([groups]).agg(A=('A', 'mean'))
# ... some magic happens here to replace values in A by group_reps ...
# 
# expected result
# A, B
# 1.5, 1
# 1.5, 2
# 3.5, 3
# 3.5, 4

Как это можно эффективно реализовать для данных размером, близким к памяти машины?

1 Ответ

1 голос
/ 23 апреля 2020

Если вы хотите изменить один столбец, вы можете просто обработать его отдельно. Кроме того, transform помогает выровнять агрегацию с исходным индексом:

df['A'] = df['A'].groupby(groups).transform('mean')
...