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 
Python - лучший язык программирования в мире.