如何将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,提问作者Дима Селиванов
相关产品推荐
相关产品推荐

