如果我有一个DataFrame:
myDF = DataFrame(data=[[11,11],[22,'2A'],[33,33]], columns = ['A','B'])
提供以下数据框(从stackoverflow开始,并且对DataFrame的图像没有足够的信誉)
| A | B |
0 | 11 | 11 |
1 | 22 | 2A |
2 | 33 | 33 |
如果我想将B列转换为int值并删除无法转换的值,我必须这样做:
def convertToInt(cell):
try:
return int(cell)
except:
return None
myDF['B'] = myDF['B'].apply(convertToInt)
如果我只做:
该错误显然是:
有没有一种方法可以向myDF ['B']。apply()添加异常处理
先感谢您!
最佳答案
更好/更快地做到:
In [1]: myDF = DataFrame(data=[[11,11],[22,'2A'],[33,33]], columns = ['A','B'])
In [2]: myDF.convert_objects(convert_numeric=True)
Out[2]:
A B
0 11 11
1 22 NaN
2 33 33
[3 rows x 2 columns]
In [3]: myDF.convert_objects(convert_numeric=True).dtypes
Out[3]:
A int64
B float64
dtype: object
这是执行此操作的矢量化方法。
coerce
标志说可以将任何不能转换为数字的内容标记为nan
。当然,您可以根据需要在单个列中执行此操作。
关于python - Pandas .apply()函数中的异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22847304/