2014-03-12 5 views
7

이 구문을 사용하면 새 데이터 프레임 (합계)에 열을 추가하는 대신 시리즈가 만들어집니다. 도와주세요.팬더 데이터 프레임의 두 열 합계

내 코드 를 :

sum = data['variance'] = data.budget + data.actual 

내 데이터 (dataframe 안양에서) : (현재 예산을 제외한 모든이 - 실제, 나는 분산 열을 생성 할

cluster  date budget actual   | budget - actual 
0 a 2014-01-01 00:00:00  11000 10000  1000 
1 a 2014-02-01 00:00:00  1200 1000 
2 a 2014-03-01 00:00:00  200  100 
3 b 2014-04-01 00:00:00  200  300 
4 b 2014-05-01 00:00:00  400  450 
5 c 2014-06-01 00:00:00  700  1000 
6 c 2014-07-01 00:00:00  1200 1000 
7 c 2014-08-01 00:00:00  200  100 
8 c 2014-09-01 00:00:00  200  300 
+0

결과를 재현 할 수 없거나 사용자를 이해하지 못합니다. 당신이 말한 후에'데이터 '에'분산 '열이 포함되어 있지 않습니까? 한 번에 두 가지 일을하는 이유는 무엇입니까? 어떤 결과를 원하니? – BrenBarn

+0

메신저 내 (sum) 변수의 결과를 출력하면 원래 데이터 프레임 (df)의 값을 가진 새로운 데이터 프레임이 아니라 일련의 값을 얻을 수 있지만 분산 (budget - actual) 열도 있습니까? – yoshiserry

+1

'data.budget + data.actual'은 시리즈를 제공합니다. 이것을'sum'에 대입합니다. 그래서'sum'은 연속입니다. DataFrame을 원한다면 DataFrame을 생성 한 다음'data.budget + data.actual'을 그 열에 할당해야합니다. – BrenBarn

답변

22

난 당신을 생각 어떤 파이썬 구문을 오해 한 적이 있습니다. 다음은 두 가지 과제입니다.

In [11]: a = b = 1 

In [12]: a 
Out[12]: 1 

In [13]: b 
Out[13]: 1 

코드에서 당신이하고 있다면 S : 당신이 변수 이름 오버라이드 (override)과 내장으로 sum을 사용해서는 안, 여담으로

In [21]: df 
Out[21]: 
    cluster     date budget actual 
0  a 2014-01-01 00:00:00 11000 10000 
1  a 2014-02-01 00:00:00 1200 1000 
2  a 2014-03-01 00:00:00  200  100 
3  b 2014-04-01 00:00:00  200  300 
4  b 2014-05-01 00:00:00  400  450 
5  c 2014-06-01 00:00:00  700 1000 
6  c 2014-07-01 00:00:00 1200 1000 
7  c 2014-08-01 00:00:00  200  100 
8  c 2014-09-01 00:00:00  200  300 

In [22]: df['variance'] = df['budget'] + df['actual'] 

In [23]: df 
Out[23]: 
    cluster     date budget actual variance 
0  a 2014-01-01 00:00:00 11000 10000  21000 
1  a 2014-02-01 00:00:00 1200 1000  2200 
2  a 2014-03-01 00:00:00  200  100  300 
3  b 2014-04-01 00:00:00  200  300  500 
4  b 2014-05-01 00:00:00  400  450  850 
5  c 2014-06-01 00:00:00  700 1000  1700 
6  c 2014-07-01 00:00:00 1200 1000  2200 
7  c 2014-08-01 00:00:00  200  100  300 
8  c 2014-09-01 00:00:00  200  300  500 

:

sum = df['budget'] + df['actual']  # a Series 
# and 
df['variance'] = df['budget'] + df['actual'] # assigned to a column 

후자는 DF에 대한 새 열을 생성 합계 함수.

+0

만약 새로운 데이터 프레임에서 분산 된 데이터 프레임을 원한다면? 이것은 내가 사용했던 구문과 매우 유사하지 않지만 dts를 사용합니까? data [ 'variance'] = data.budget + data.actual – yoshiserry

+0

@yoshiserry 동일한 DataFrame에서와 마찬가지로 '데이터'는 변경하지 않습니까? –

+0

@yoshiserry 네, 그 문법은 같은'data.budget'은'data [ 'budget']'와 같은 것입니다. –

관련 문제