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

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

Account Date    Region  Type    Measure Value
Bob     31-Jan  East    A       Sales   7
Bob     31-Jan  West    A       Sales   8
Bob     31-Jan  East    B       Expense 5
Bob     31-Jan  West    B       Expense 10

Единственное отличие состоит в том, что мой реальный фрейм данных имеет несколько различных полей для измерений "account", "date" и "type".

Моя цель здесь состоит в том, чтобы изменить значение только счетов Боба на 50/50 между регионами

, например, это будет выглядеть так:

 Account    Date    Region  Type    Measure Value
 Bob        31-Jan  East    A       Sales   7.5
 Bob        31-Jan  West    A       Sales   7.5
 Bob        31-Jan  East    B       Expense 5
 Bob        31-Jan  West    B       Expense 10

Я попытался отфильтровать свою df по Бобу и начать продажи:

 df = df[df['Account'] == 'Bob']
 df = df[df['Measure'] == 'Sales']

Далее я делаю все Регионы одинаковыми:

 df['Region'] = 'East and West'

Оказавшись здесь,Я перепробовал несколько групповых функций, но мне кажется, что ни одна из них не возвращает правильные значения.

Должен ли я попытаться транспонировать свою df и работать оттуда?

1 Ответ

0 голосов
/ 27 сентября 2018

Если вам нужно сделать это только для значений 'sales' для одного человека, используйте логическое индексирование и mean

mask = (df.Measure == 'Sales') & (df.Account == 'Bob')
df.loc[mask, 'Value'] = df.loc[mask, 'Value'].mean()

Однако, если вы хотите сделать это для 'sales' меры для каждой учетной записи, вы должны использовать groupby + transform.

mask = (df.Measure == 'Sales')
df.loc[mask, 'Value'] = df[mask].groupby('Account').Value.transform('mean')

Вывод:

  Account    Date Region Type  Measure  Value
0     Bob  31-Jan   East    A    Sales    7.5
1     Bob  31-Jan   West    A    Sales    7.5
2     Bob  31-Jan   East    B  Expense    5.0
3     Bob  31-Jan   West    B  Expense   10.0

В последнем случае вы могли быдобавьте больше столбцов в столбцы группировки, например, если вы хотите рассчитать средние продажи для каждого аккаунта на каждую дату, каждого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...