2016-11-16 3 views
0

이것은 초보자 용 질문 일 수 있습니다. 그러나이 작업을 수행하는 방법을 알아 내는데 몇 시간을 소비했습니다. Okie, 150 개의 변수와 대상이 포함 된 데이터 프레임이 있습니다. 다음과 같은 샘플 :파이썬을 사용하여 데이터 프레임에 새로운 계산 된 열을 추가하는 방법

train 
Out[1]: 
     var1 var2 target 
0   A  C  10.5 
1   A  D  13.5   
2   B  D  2.5  

목표의 평균을 가진 추가 된 열을 사용하여 새 데이터 프레임을 작성하고 싶습니다. 예 : var1_new의 행 1은 대상의 평균을 가져야합니다. 여기서 var1 == A, 즉 12 ((10.5 + 13.5)/2)

파이썬에서는 이것을 알아낼 수 없습니다. 도움이 될 것입니다.

train_new 
Out[2]: 
      var1 var2 target var1_new var2_new 
0   A  C  10.5  12  10.5    
1   A  D  13.5  12  8  
2   B  D  2.5  2.5  8  
+1

코드 – user2693928

+0

@Nim J를 제공하십시오, 당신이 원하는에 더 명확 해주십시오. 2 열의 수단을 세 번째 열에 넣길 원하십니까? 당신은 (12.5 + 13.5)/2의 예제를 제공하지만 귀하의 데이터에 12.5라는 숫자는 없습니다. var1과 var2는 숫자이고, 그것들은 평균값에서 원하는 컬럼이 될 것인가? 아니면 타겟과 함께 2 개의 새로운 컬럼을 만드는 것 중 하나로부터의 평균값입니까? – ivan7707

+0

사과 @ ivan7707. 나는 그것을 바로 잡았다. 새로운 변수는 목표의 평균값을 가져야합니다. Var1과 Var2는 범주입니다. –

답변

1
variables = ['var1', 'var2'] 
for var in variables: 
    df[var + "_new"] = None 

for var in variables: 
    for k, v in df.groupby(var).mean()['target'].iteritems(): 
     df.loc[df[var] == k, var + "_new"] = v 
+0

감사합니다. @Ilya V. Schurov. 이 작동합니다. iteritems()로 항목()을 변경하십시오. 팬더 시리즈를 반복하고 있습니다. –

+0

흠, 최소한 파이썬 3에서'pd.Series.items()'와'pd.Series.iteritems()'는 똑같은 것을 (반복자 생성)하지만, 문서에는'iteritems()'만 언급되어있는 것 같습니다. 알았어. 대체 했어. 왼쪽의 확인 표시를 클릭하여 문제를 해결하면 수락하고 답변 할 수 있습니다. –

관련 문제