2016-07-01 2 views
0

섭씨 온도의 CSV 파일을 섭씨 화씨로 변환하고 싶습니다.CSV 파일에서 섭씨에서 화씨로 변환

현재 시도 :

import pandas as pd 
df = pd.read_csv('/temperature_data.csv',) 

def f(x): 
    x = x * 1.8 + 32 
    return float(x) 

df['AirTemperature'] = df.apply(f, axis=1) 

내가 성공적으로 단순히 입력 기능에 정수를하는 경우이 작업을 수행 할 수 있어요,하지만 난 CSV 파일 사용하려고 할 때이 오류 메시지가 계속 :

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

값을 float로 변환하려고 시도했지만 운이 없었습니다.

편집 : 사용중인 CSV 파일이 다중 열입니다. 그것에는 단순히 공기 온도 이상이 있습니다.

가 또한 여기에 전체 역 추적

내가 전에 팬더을 사용하지 않는 한
`--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-4-a63269740c5c> in <module>() 
----> 1 df['AirTemperature'] = df.apply(f, axis=1) 

/Users/pvayn/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in apply(self, func, axis, broadcast, raw, reduce, args, **kwds) 
    4040      if reduce is None: 
    4041       reduce = True 
-> 4042      return self._apply_standard(f, axis, reduce=reduce) 
    4043    else: 
    4044     return self._apply_broadcast(f, axis) 

/Users/pvayn/anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _apply_standard(self, func, axis, ignore_failures, reduce) 
    4136    try: 
    4137     for i, v in enumerate(series_gen): 
-> 4138      results[i] = func(v) 
    4139      keys.append(v.name) 
    4140    except Exception as e: 

<ipython-input-3-895f5da25595> in f(x) 
     1 def f(x): 
----> 2  x = x*1.8 + 32 
     3  return float(x) 

/Users/pvayn/anaconda/lib/python2.7/site-packages/pandas/core/ops.pyc in wrapper(left, right, name, na_op) 
    647     lvalues = lvalues.values 
    648 
--> 649    return left._constructor(wrap_results(na_op(lvalues, rvalues)), 
    650          index=left.index, name=left.name, 
    651          dtype=dtype) 

/Users/pvayn/anaconda/lib/python2.7/site-packages/pandas/core/ops.pyc in na_op(x, y) 
    588     result = np.empty(len(x), dtype=x.dtype) 
    589     mask = notnull(x) 
--> 590     result[mask] = op(x[mask], y) 
    591    else: 
    592     raise TypeError("{typ} cannot perform the operation " 

TypeError: ("can't multiply sequence by non-int of type 'float'", u'occurred at index 0') 
+0

주어진 코드는 float와 int가 모두 포함 된 단일 열의 CSV로 작동합니다. 전체 추적을 볼 수 있을까요? –

+1

함수에 의해받은'x'가 int가 아닌 시퀀스 타입이라는 것을 분명히 알았습니다. 이것은 문서에서 언급 한 것 같습니다. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html이를 수용하기 위해'f'를 수정해야 할 수도 있습니다. –

+0

@DavidZemens에 접근하는 방법에 대한 권장 사항이 있습니까? – pvayn

답변

1

이지만 작동합니다 같은 문서를 검토,이 같습니다

df['Air Temperature'] = df['Air Temperature'].apply(f) 

'Air Temperature'가 DataFrame의 연속이다, series object에는 적용 메소드도 있습니다.