首页 > 解决方案 > 将数据框中的所有数值转换为浮点数,但保持字符串不变

问题描述

假设我有这个数据框:

pd.DataFrame({"A": [1,'3', "4-Very Good"], "B":['1', '2', '3}'], "C": ['Apple', 'Ball', 'Cat'], "D": [1,4,"5-Excellent"]})

“A”列: 1)我希望将 1 和 '3' 都转换为 float ;2) 不想将“4-非常好”转换为 NaN。

“B”列:我想让“1”、“2”、“3”中的每一个浮动。

“C”栏:应保持不变。

“D”列: 1)我想将“1”和“4”改为浮动;2)不想将“4-Very Good”转换为 NaN。

标签: pythonpandas

解决方案


一种方法是float使用pd.to_numeric所有现有数字进行转换,然后fillna使用df

df.apply(pd.to_numeric, errors='coerce').fillna(df)

             A   B      C            D
0            1   1  Apple            1
1            3   2   Ball            4
2  4-Very Good  3}    Cat  5-Excellent
​

@aLollz 的赞赏:仅仅在df.apply(pd.to_numeric, errors='ignore')这里做我们并没有解决问题。当整列无法转换为 时float,它保持不变。我们必须coerce出错,以便该列变为浮点类型,然后是字符串值,在填充任何值的情况下以 dtype 列fillna结束,但数值保留为浮点数。object


推荐阅读