2017-11-06 1 views
0

내가 가진 :데이터 계산

A1 A2 Random data Random data2 Average Stddev 
0 0.1 2.0   300   3000  1.05 1.343503 
1 0.5 4.5   4500   450  2.50 2.828427 
2 3.0 1.2   800   80  2.10 1.272792 
3 9.0 9.0   900   90  9.00 0.000000 

그리고 컬럼으로 계산 된 값을 가질 필요가있다 'COLUMNX'를 추가하고 싶습니다 :

ColumnX = min(df['Random data']-df['Average'],df[Random data2]- 
df[Stddev])/3.0*df['A2']) 

나는 오류를 얻을 :

ValueError: The truth value of a Series is ambiguous. 
+0

출력 결과를 알려주세요. 즉 계산을 수행해야한다고 생각하는 방식을 명시 적으로보고 싶습니다. – piRSquared

답변

1

귀하의 실수는 비트 연산자를 선호하고 내장 된 min 기능을 사용하면 ro를 사용하지 않을 것입니다. w 현명하다.

잠재적 인 해결책은 pandas dataframe .min 메서드를 사용하여 두 개의 새로운 계산 된 열을 만드는 것입니다.

df['calc_col_1'] = df['Random data']-df['Average'] 
df['calc_col_2'] = (df['Random data2']-df['Stddev'])/(3.0*df['A2']) 
df['min_col'] = df[['calc_col_1','calc_col_2']].min(axis=1) 

min (축 = 1) 메서드는 두 열 사이의 최소값을 새 열에 할당 한 다음 찾습니다. 이 방법은 numpy 벡터화를 사용하기 때문에 효율적이며 읽기가 쉽습니다.

+0

감사합니다. df [ 'calc_col_2'] = (df [ '임의의 데이터 2'] - df [ 'Stddev']) 다음을 추가했습니다. df [ 'colx'] = df [ 'min_col']/(3.0 * df [ 'A2']) 올바른지 확인하십시오. 다시 한번 감사드립니다. – magicsword