You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame中Object类型的收盘价字典数据转换为数值型?

解决证券收盘价字典格式转数值格式问题

你的自定义函数失效的核心原因是:close列的每个元素是字典类型,不是自定义对象,所以不能用.访问属性,必须通过字典键的方式取值。

修正后的处理方案

1. 修正自定义函数

把属性访问改成字典键访问:

def parse_close(v):
    return v['units'] + v['nano'] / 1e9

2. 应用到DataFrame列

假设你的数据存在pandas的DataFrame中,用apply方法批量处理:

import pandas as pd

# 示例数据构造
data = [
    {'close': {'units': 270, 'nano': 190000000}, 'volume': 51642, 'time': '2023-12-29 07:30:00+00:00'},
    {'close': {'units': 270, 'nano': 930000000}, 'volume': 47910, 'time': '2023-12-29 08:00:00+00:00'},
    {'close': {'units': 271, 'nano': 0}, 'volume': 49376, 'time': '2023-12-29 08:30:00+00:00'}
]
df = pd.DataFrame(data)

# 转换close列
df['close'] = df['close'].apply(parse_close)

3. 优化显示格式(可选)

如果需要像示例那样,整数显示为271而非271.0,小数保留两位,可额外处理:

# 处理显示格式:整数转int,小数保留两位
df['close'] = df['close'].apply(lambda x: int(x) if x.is_integer() else round(x, 2))

处理后的数据就会和你期望的格式一致:

| close   | volume     | time
| 270.19  | 51642      | 2023-12-29 07:30:00+00:00
| 270.93  | 47910      | 2023-12-29 08:00:00+00:00
| 271     | 49376      | 2023-12-29 08:30:00+00:00

内容的提问来源于stack exchange,提问作者Дима Селиванов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:47:35