python - 将数据框中的所有数值转换为浮点数,但保持字符串不变
问题描述
假设我有这个数据框:
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。
解决方案
一种方法是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
推荐阅读
- android - 我正在尝试从数组列表中的房间数据库中获取数据,但它仅显示 android 中的最后一条记录
- ruby-on-rails - 无法从我的 Windows 桌面访问在 AWS Ubuntu 上运行的 rails localhost
- arrays - 用汇编语言 x86 从大到小对数组进行排序
- amazon-iam - 使用 nodejs aws sdk 连接到 aws 弹性搜索
- sql - 如何从jsonb int数组制作sql表列
- angular - 每次将新对象推入数组时,模板中的循环都会重复。我怎样才能在模板中处理这个?
- c# - 在 Tableview 中排序
- javascript - Vue.js 嵌套引用,方法未定义
- kubernetes - OpenShift 模板“对象已存在”错误
- html - 以角度在 mat-card 上使用阴影