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)
It gives error
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')
Its because you are trying to convert string to numeric The column 'Country'' obviously might contain strings. Try using without 'Country'
energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']] = energy[['Energy Supply', 'Energy Supply per Capita', '% Renewable']].replace('...',np.NaN).apply(pd.to_numeric)