2016-09-20 2 views
0

다음은 데이터 프레임의 행을 따라 작동합니다. 나는 을 또는 np.array과 같이 많은 것을 시도해 본 결과, 곱셈이 작동하지만 지금까지는 아무 소용이 없습니다. 또한 요소를 int으로 곱한 다음 10으로 나누지 만, 도 마찬가지입니다. 모든 피연산자를 개별적으로 np.array()에 랩했고, 작업을 수행 할 때마다 np.multiply을 시도했지만 그 오류는 계속 발생합니다. 여기 TypeError : np.multiply를 사용한 후에도 'float'유형의 non-int로 시퀀스를 곱할 수 없습니다.

factor = somefloatnumber # i.e 0.4 
def func(row): 
    return row *factor/np.sum(row) 
df2 = df1.apply(func, axis=1) 

TypeError: can't multiply sequence by non-int of type 'float'

은 내가 사용하고있는 데이터의 샘플입니다.

    A  B   C   D   E 
2006-04-28 A  69.62  69.62 3.518  65.09  69.62 
      B  27.78 7.7  27.78  27.7  27 
      C  0.23  0.22  0.02  0.23  0.21 

2006-05-01 A  71.5  71.5  6.522  65.16  71.5 
      B  28.4828 28.4828 28.4828 28.4828 28.4828 
      C  0.249841 0.249841 0.0227897 0.227687 0.249841 
+0

샘플 입력 데이터 프레임을 제공 하시겠습니까? – Divakar

+0

확인 완료. 금융 데이터 다운로드 – uniXVanXcel

+0

팬더 태그가 추가되어 전문가가 도움을받을 수 있습니다. – Divakar

답변

0

convert_objects(convert_numeric=True) 트릭을 할 것 같다! 나는 미래 경고를 얻을, 당신은 그러나이 방법

df1.convert_objects(convert_numeric=True).apply(func,axis=1). 

을 사용, http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.convert_objects.html

을 내 문제의 경우 위 :
그것은 참조 객체 컬럼에 대한 더 나은 DTYPE를 추론하려고 시도

FutureWarning: convert_objects is deprecated. Use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.

하지만 작동합니다.

+1

그래서 귀하의 항목은 숫자가 아닌 다른 것으로, 또는 혼합 된 유형으로 보입니다. 어쨌든 잘 작동합니다! – AlvaroP

관련 문제