CSV 文件中的摄氏度到华氏度转换
Celsius to Fahrenheit conversion in CSV file
我想获取一个包含摄氏温度的 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'
我试过将值转换为浮点数,但没有成功。
编辑:
我使用的 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')
我以前没有使用过 Pandas,但查看了文档,这看起来应该有效:
df['Air Temperature'] = df['Air Temperature'].apply(f)
'Air Temperature'
是DataFrame中的一个系列,series object也有一个apply方法。
您可以使用以下代码:
df.assign(Fahrenheit = lambda x: (9/5)*x['Celsius']+32)
公式是:
华氏度转摄氏度公式:
(°F – 32) x 5/9 = °C AND
摄氏度到华氏度公式:
(°C × 9/5) + 32 = °F
f = 12
如果我想将摄氏度的 f 转换为华氏度,我会告诉你
简单的公式
天 = f
天 = 天 * 9/5 + 32
如果我打印这些日子
结果将是 53.6
我想获取一个包含摄氏温度的 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'
我试过将值转换为浮点数,但没有成功。
编辑: 我使用的 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')
我以前没有使用过 Pandas,但查看了文档,这看起来应该有效:
df['Air Temperature'] = df['Air Temperature'].apply(f)
'Air Temperature'
是DataFrame中的一个系列,series object也有一个apply方法。
您可以使用以下代码:
df.assign(Fahrenheit = lambda x: (9/5)*x['Celsius']+32)
公式是: 华氏度转摄氏度公式:
(°F – 32) x 5/9 = °C AND
摄氏度到华氏度公式:
(°C × 9/5) + 32 = °F
f = 12 如果我想将摄氏度的 f 转换为华氏度,我会告诉你 简单的公式 天 = f 天 = 天 * 9/5 + 32 如果我打印这些日子 结果将是 53.6