【发布时间】:2017-02-09 17:23:23
【问题描述】:
我已经被这个问题困扰了一段时间,而且谷歌搜索似乎无济于事。
我正在阅读大量原始数据。一些变量以对象的形式出现,因为源使用了字母,因为各种原因丢失(我不在乎)。
所以我想通过pandas.to_numeric(___ ,error='coerce') 运行相当大的列子集,只是为了强制将它们强制转换为 int 或 float(同样,我不太在意哪个,只是它们是数字的。
我可以轻松地逐列实现这一点:
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')
我得到的错误是:
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,一定要给出有意义的返回值(即如果无法转换,则返回原始值)。
标签: python list pandas dataframe