如果我有一个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/

10-14 01:09