doz*_*tin 5 python list dataframe pandas
我已经坚持了一段时间,似乎没有任何帮助。
我正在读很多原始数据。由于变量由于各种原因(我不在乎)而使用字母,因此某些变量作为对象进入对象。
因此,我想通过运行一个相当大的列子集,pandas.to_numeric(___ ,error='coerce')以强制将它们强制转换为int或float(再次,我不太在乎哪一个,只是它们是数字。
我可以很容易地逐列进行此操作:
df['col_name'] = pd.to_numeric(df['col_name'], errors='coerce')
Run Code Online (Sandbox Code Playgroud)
但是,我有60列要转换为..所以我认为这样可以工作:
numeric = ['lots', 'a', 'columns']
for item in numeric:
df_[item] = pd.to_numeric(df[item], errors='coerce')
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
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
Run Code Online (Sandbox Code Playgroud)
我尝试了许多版本。这与列表或浏览列表有关。当for循环简单地要求df(item).describe()
从我(还是新手)对Python的理解开始,这应该可以工作。我很茫然。谢谢
首先看这个回答
# Let
numeric = ['lots', 'a', 'columns']
Run Code Online (Sandbox Code Playgroud)
选项1
df[numeric] = df[numeric].apply(pd.to_numeric, errors='coerce')
Run Code Online (Sandbox Code Playgroud)
选项 2
df.loc[:, numeric] = pd.to_numeric(df[numeric].values.ravel(), 'coerce') \
.reshape(-1, len(numeric))
Run Code Online (Sandbox Code Playgroud)
演示
考虑数据框df
df = pd.DataFrame([
[1, 'a', 2],
['b', 3, 'c'],
['4', 'd', '5']
], columns=['A', 'B', 'C'])
Run Code Online (Sandbox Code Playgroud)
那么上面的两个选项都会产生
| 归档时间: |
|
| 查看次数: |
2139 次 |
| 最近记录: |