2015-05-14 15 views
15

Der Versuch, eine neue Spalte mit der groupby Berechnung zu erstellen. Im folgenden Code bekomme ich die korrekten berechneten Werte für jedes Datum (siehe Gruppe unten), aber wenn ich versuche, eine neue Spalte (df ['Data4']) damit zu erstellen, bekomme ich NaN. Also versuche ich eine neue Spalte im Datenrahmen mit der Summe von 'Data3' für alle Daten zu erstellen und diese auf jede Datumszeile anzuwenden. Zum Beispiel, 2015-05-08 ist in 2 Zeilen (insgesamt ist 50 + 5 = 55) und in dieser neuen Spalte möchte ich 55 in beiden Reihen haben.Python Pandas Erstellen Sie eine neue Spalte mit Groupby(). Sum()

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 

Antwort

69

Sie wollen transform diese verwenden eine Serie mit dem Index zum df ausgerichtet zurückzukehren und dann als neue Spalte hinzufügen:

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

dich so sehr danken. –

+12

Bitte akzeptieren Sie meine Antwort, wenn es Ihre Frage gelöst hat, wird es ein leeres Häkchen links oben auf meiner Antwort, danke – EdChum

+3

Und fe nie kam zurück: '( – rocarvaj

Verwandte Themen