2015-05-14 3 views
15

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

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 

ответ

69

Вы хотите использовать transform это будет возвращать серии с индексом выравниванием по ФР, так что вы можете добавить его в качестве новой колонки:

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 
+2

спасибо так много. –

+12

Пожалуйста, примите мой ответ, если он решит ваш вопрос, в левом верхнем углу моего ответа будет отмечена пустая отметка, спасибо – EdChum

+3

И еще никто не вернулся: '( – rocarvaj

Смежные вопросы