Pandon Pandas Создать новый столбец с Groupby (). Sum ()

Попытка создать новый столбец с учетом группового расчета. В приведенном ниже коде я получаю правильные вычисленные значения для каждой даты (см. Группу ниже), но когда я пытаюсь создать новый столбец (df ['Data4']), я получаю NaN. Поэтому я пытаюсь создать новый столбец в dataframe с суммой «Data3» для всех дат и применить это к каждой строке даты. Например, 2015-05-08 находится в 2 строках (всего 50 + 5 = 55), и в этом новом столбце я хотел бы иметь 55 в обеих строках.

import pandas as pd import numpy as np from pandas import DataFrame df = pd.DataFrame({'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40],'Data3': [5, 8, 6, 1, 50, 100, 60, 120]}) group = df['Data3'].groupby(df['Date']).sum() df['Data4'] = group 

One Solution collect form web for “Pandon Pandas Создать новый столбец с Groupby (). Sum ()”

Вы хотите использовать transform это вернет серию с индексом, выровненным по df, чтобы вы могли добавить его в качестве нового столбца:

 In [74]: df = pd.DataFrame({'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40],'Data3': [5, 8, 6, 1, 50, 100, 60, 120]})​ df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum') df Out[74]: Data2 Data3 Date Sym Data4 0 11 5 2015-05-08 aapl 55 1 8 8 2015-05-07 aapl 108 2 10 6 2015-05-06 aapl 66 3 15 1 2015-05-05 aapl 121 4 110 50 2015-05-08 aaww 55 5 60 100 2015-05-07 aaww 108 6 100 60 2015-05-06 aaww 66 7 40 120 2015-05-05 aaww 121  In [74]: df = pd.DataFrame({'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40],'Data3': [5, 8, 6, 1, 50, 100, 60, 120]})​ df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum') df Out[74]: Data2 Data3 Date Sym Data4 0 11 5 2015-05-08 aapl 55 1 8 8 2015-05-07 aapl 108 2 10 6 2015-05-06 aapl 66 3 15 1 2015-05-05 aapl 121 4 110 50 2015-05-08 aaww 55 5 60 100 2015-05-07 aaww 108 6 100 60 2015-05-06 aaww 66 7 40 120 2015-05-05 aaww 121 
  • ValueError: слишком много значений для распаковки при использовании itertuples () в pandas dataframe
  • Фиктивные переменные, если присутствуют не все категории
  • Сумма нескольких столбцов из кадра данных pandas
  • Создайте Pandas DataFrame из txt-файла с определенным шаблоном
  • Pandas DataFrame.unstack () Изменяет порядок заголовков строк и столбцов
  • Переопределение столбца Pandas DataFrame со значениями словаря, где ключи словаря соответствуют столбцу без индекса?
  • Scatter plotting pandas DataFrame с категорически помеченными строками / столбцами
  • Панды: заполнение отсутствующих значений по средней в каждой группе
  • Почему я получаю эту ошибку? ValueError: Неправильное количество элементов прошло 2, место предполагает 4 ", даже код в порядке?
  • Лучший способ присоединиться к двум крупным наборам данных в Pandas
  • Преобразование данных в словарь списка кортежей
  • Python - лучший язык программирования в мире.