我正在转换专栏和使用以下任一项将数据帧的单元格值设置为float64:
print(cardTemplate)
或
df.infer_objects()
第一个将这些列保留为不可转换的对象类型,而第二个列则在某些对象无法转换时引发异常。我的问题是,如果以某种方式可以提供我自己的错误/转换器回调函数?像这样:
df.apply(pd.to_numeric)
答案 0 :(得分:0)
我不知道如何简明扼要地完成你的要求。这对api来说是一个很好的补充。这是有用的东西,有点令人费解。
将pd.to_numeric
方法设置为不引发异常,而是使用errors
参数返回NaN。使用您的NaN apply
您的特殊转换器功能的位置。现在使用add
和参数fill_value=0
添加使用pd.to_numeric
和特殊转换器转换的DataFrame。
您可以在to_numeric
和add
它看起来像这样。
import pandas as pd
import numpy as np
df = pd.DataFrame({ 'A': np.random.randn(5),
'B': np.random.randn(5)})
A B
0 -0.619165 1.310489
1 0.908564 1.017284
2 0.046072 -1.059349
3 1.123730 -2.229261
4 0.689580 -0.200981
df1 = df[df < 1] # This is your DataFrame from df.apply(pd.to_numeric, errors='coerce')
df1
A B
0 -0.619165 NaN
1 0.908564 NaN
2 0.046072 -1.059349
3 NaN -2.229261
4 0.689580 -0.200981
df2 = df[df1.isnull()]
df2 # This is the DataFrame you want to apply your converter df2.apply(my_converter)
df2 = df2.apply(lambda x: x*10) # This is my dummy special converter
df2
A B
0 NaN 13.104885
1 NaN 10.172835
2 NaN NaN
3 11.237296 NaN
4 NaN NaN
df1.add(df2, fill_value=0) # This is the final dataframe you're looking for
A B
0 -0.619165 13.104885
1 0.908564 10.172835
2 0.046072 -1.059349
3 11.237296 -2.229261
4 0.689580 -0.200981