当改变Pandas dataframe类型时的异常处理

2024-09-28 22:03:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Pandas数据框,只有一列字符串。我想把列数据转换成float。由于格式的原因,某些值无法转换为浮点值。我想从结果中省略这些“非法字符串”,只提取可以合法地重新转换为float的值。起始数据:

test=pd.DataFrame()
test.loc[0,'Value']='<3'
test.loc[1,'Value']='10'
test.loc[2,'Value']='Detected'
test.loc[3,'Value']=''

所需的输出仅包含可以重新转换为浮点数的字符串(在本例中为10):

cleanDF=test['Value'].astype(float)
cleanDF
0    10
Name: Value, dtype: float64

当然,这会对用于浮点转换的非法字符串引发一个预期的错误:

ValueError: could not convert string to float: <3

如果dataframe很大并且在“Value”中包含许多非法字符串,是否有一种简单的方法来解决此问题?

谢谢。


Tags: 数据字符串testdataframepandasvalue格式原因
1条回答
网友
1楼 · 发布于 2024-09-28 22:03:43

您可以尝试使用DataFrame的apply。编写包含异常处理程序的函数并将其应用于数据帧。

def test_apply(x):
    try:
        return float(x)
    except ValueError:
        return None

cleanDF = test['Value'].apply(test_apply).dropna()

相关问题 更多 >