Pandas选列触发only integer scalar arrays报错如何解决
问题根因
- 第一步读取CSV时
sep=", "设置错误:你的CSV实际分隔符是纯逗号',',分隔符参数多余的空格导致pandas无法正确识别列边界,才会把所有数据读成1列 - 后续拆分列时列名格式错误:
names= df.columns.str.split(',').tolist()得到的是嵌套列表,赋值给df.columns后会生成多层索引(MultiIndex),而非普通的字符串索引,用字符串直接取值就会触发你遇到的TypeError
最优解决方案:从读取CSV环节修正,避免后续手动拆分的冗余操作
直接调整read_csv参数即可一步读取到格式正确、类型正确的40列数据:
import pandas as pd data = "mydata.csv" df = pd.read_csv( data, sep=',', # 去掉分隔符里多余的空格 thousands=',', quotechar='"', # 自动识别列名、数值外包裹的引号,无需额外处理 dtype='float64' # 直接指定所有列类型为float64,不需要后续apply转换 ) # 此时直接取列即可正常运行 X = df['USDTRY']
现有df临时修复方案
如果你不想重新读取CSV,可以直接执行以下代码修复当前df的索引问题:
# 展平多层索引,同时去掉列名里多余的引号 df.columns = [col.strip('"') for col in df.columns.get_level_values(0)] # 再取列即可正常运行 X = df['USDTRY']
内容的提问来源于stack exchange,提问作者SBA
相关产品推荐
相关产品推荐

