2013-05-17 2 views
0

데이터 프레임이 있고 다른 열 (동일한 행에 있음)에있는 값으로 값이 정의되는 새 열을 만들고 싶습니다. 간단한 조작 (+, -, * 및 심지어 abs)을 사용하면 매우 간단합니다. 예를 들어 : 시리즈를 인수로 사용하는 팬더에서 함수를 정의하는 방법은 무엇입니까?

df['new_col'] = abs(df['col1']*df['col2'] - df['col3']) 

는 다음 파이썬에서 내 자신의 기능을 정의하고 다음을 수행하려고 :
df['new_col'] = my_func(df['col1'], df['col2'], df['col3'], df['col4']). 

불행하게도 그것이 작동하지 않았다. 나는 그것이 작동하지 않는 이유는 my_funcasin, atan 및 시리즈에 적용 할 수없는 다른 기능을 포함하고 있기 때문이라고 생각합니다. 예를 들어 내가 abs(df['col1'])을하려고하면 나는 아무 불평 얻을하지만 asin(df['col1'])를하려고하면 나는 오류 메시지가 있어요 :

TypeError: only length-1 arrays can be converted to Python scalars 

abs과 같은 방법으로 asin (또는 내 자신의 기능 my_func)을 사용하게됩니다 트릭이 거기를 또는 +이 사용됩니까?

답변

2

numpyuniversal functions을 사용하십시오.

귀하의 경우 math.asin 대신 numpy.arcsin을 사용하십시오.

+0

감사합니다. 그것은 좋은 방법 인 것처럼 보입니다. 필자의 경우 다른 열에서 값을 가져 와서 비교하고 삼각 함수를 사용합니다. 내가 링크 한 사이트에서 보편적 인 기능에 대해 읽었습니다. 비교를위한 보편적 인 함수와 삼각 함수를 찾을 수 있습니다. 그러나 보편적 인 if 함수는 보이지 않습니다. 그러한 것이 존재 하는가? – Roman

+0

아마도''some_series.where (condition, other_series)''를 찾고있을 것입니다. –

관련 문제