将 nan 转换为数字
conversion of nan to numeric
energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']] = energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)
报错
Traceback (most recent call last)
pandas/src/inference.pyx in pandas.lib.maybe_convert_numeric (pandas/lib.c:55708)()
ValueError: Unable to parse string "Afghanistan"
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-4-d0b55a0e8afa> in <module>()
5 energy=energy[['Unnamed: 1','Petajoules','Gigajoules','%']]
6 energy.columns=['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']
----> 7 energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']]=energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)
8 energy['Energy Supply']=energy['Energy Supply']*1,000,000
9 energy
/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in apply(self, func, axis, broadcast, raw, reduce, args, **kwds)
4150 if reduce is None:
4151 reduce = True
-> 4152 return self._apply_standard(f, axis, reduce=reduce)
4153 else:
4154 return self._apply_broadcast(f, axis)
/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in _apply_standard(self, func, axis, ignore_failures, reduce)
4246 try:
4247 for i, v in enumerate(series_gen):
-> 4248 results[i] = func(v)
4249 keys.append(v.name)
4250 except Exception as e:
/opt/conda/lib/python3.6/site-packages/pandas/tools/util.py in to_numeric(arg, errors, downcast)
193 coerce_numeric = False if errors in ('ignore', 'raise') else True
194 values = lib.maybe_convert_numeric(values, set(),
--> 195 coerce_numeric=coerce_numeric)
196
197 except Exception:
pandas/src/inference.pyx in pandas.lib.maybe_convert_numeric (pandas/lib.c:56097)()
ValueError: ('Unable to parse string "Afghanistan" at position 0', 'occurred at index Country')
是的,这绝对是一个错误。
说真的,考虑问一个问题,说出你想做什么或你需要知道什么来实现你正在尝试的。
如果问题是“如何让我的列表能量只有数字”,你可以试试这个:
for i in range(len(energy)):
if not isinstance(energy[i], (int, float, complex)):
energy[i] = 0
不客气。
这是因为您正在尝试将字符串转换为数字
'Country'' 列显然可能包含字符串。尝试不使用 'Country'
energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']] = energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)
energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']] = energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)
报错
Traceback (most recent call last)
pandas/src/inference.pyx in pandas.lib.maybe_convert_numeric (pandas/lib.c:55708)()
ValueError: Unable to parse string "Afghanistan"
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-4-d0b55a0e8afa> in <module>()
5 energy=energy[['Unnamed: 1','Petajoules','Gigajoules','%']]
6 energy.columns=['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']
----> 7 energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']]=energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)
8 energy['Energy Supply']=energy['Energy Supply']*1,000,000
9 energy
/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in apply(self, func, axis, broadcast, raw, reduce, args, **kwds)
4150 if reduce is None:
4151 reduce = True
-> 4152 return self._apply_standard(f, axis, reduce=reduce)
4153 else:
4154 return self._apply_broadcast(f, axis)
/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in _apply_standard(self, func, axis, ignore_failures, reduce)
4246 try:
4247 for i, v in enumerate(series_gen):
-> 4248 results[i] = func(v)
4249 keys.append(v.name)
4250 except Exception as e:
/opt/conda/lib/python3.6/site-packages/pandas/tools/util.py in to_numeric(arg, errors, downcast)
193 coerce_numeric = False if errors in ('ignore', 'raise') else True
194 values = lib.maybe_convert_numeric(values, set(),
--> 195 coerce_numeric=coerce_numeric)
196
197 except Exception:
pandas/src/inference.pyx in pandas.lib.maybe_convert_numeric (pandas/lib.c:56097)()
ValueError: ('Unable to parse string "Afghanistan" at position 0', 'occurred at index Country')
是的,这绝对是一个错误。
说真的,考虑问一个问题,说出你想做什么或你需要知道什么来实现你正在尝试的。
如果问题是“如何让我的列表能量只有数字”,你可以试试这个:
for i in range(len(energy)):
if not isinstance(energy[i], (int, float, complex)):
energy[i] = 0
不客气。
这是因为您正在尝试将字符串转换为数字 'Country'' 列显然可能包含字符串。尝试不使用 'Country'
energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']] = energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)