我已经被这个问题困扰了一段时间,但是无论我怎么搜索都没有得到帮助。
我正在读取大量的原始数据。由于数据来源使用字母来表示缺失值,因此有些变量会以对象形式出现(我不关心缺失值的具体原因)。
因此,我想通过pandas.to_numeric(___ ,error='coerce') 将相当大的一部分列强制转换为整数或浮点数(我不太关心哪种类型,只要它们是数字就可以)。
逐列进行操作很容易实现:
我正在读取大量的原始数据。由于数据来源使用字母来表示缺失值,因此有些变量会以对象形式出现(我不关心缺失值的具体原因)。
因此,我想通过pandas.to_numeric(___ ,error='coerce') 将相当大的一部分列强制转换为整数或浮点数(我不太关心哪种类型,只要它们是数字就可以)。
逐列进行操作很容易实现:
df['col_name'] = pd.to_numeric(df['col_name'], errors='coerce')
然而,我有大约60列需要像这样转换...所以我认为这会起作用:
numeric = ['lots', 'a', 'columns']
for item in numeric:
df_[item] = pd.to_numeric(df[item], errors='coerce')
The error I get is:
Traceback (most recent call last):
File "/Users/____/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2885, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-53-43b873fbd712>", line 2, in <module>
df_detail[item] = pd.to_numeric(dfl[item], errors='coerce')
File "/Users/____/anaconda/lib/python2.7/site-packages/pandas/tools/util.py", line 101, in to_numeric
raise TypeError('arg must be a list, tuple, 1-d array, or Series')
TypeError: arg must be a list, tuple, 1-d array, or Series
我尝试了很多版本,这与列表或查看列表有关。当for循环只调用df(item).describe()
时,我会得到完全相同的错误。
从我(仍然是初学者)对Python的理解来看,这应该可以工作。我不知所措。谢谢。
applymap
,并确保给出有意义的返回值(即如果无法转换,则返回原始值)。 - Jan