Shapelets中CSV首行设表头失败,from_csv无header参数报错求助
Shapelets平台导入CSV设置列名问题
在Shapelets平台使用Shapelets-queries展示表格时,导入mitdb102.csv数据后列名默认显示为Column0、Column1、Column2。尝试用session.from_csv("/root/test_10:04:2023/Resources/mitdb102.csv", header=1)将首行设为列名,但该方法不支持header参数,报错:
TypeError: SandBox.from_csv() got an unexpected keyword argument 'header'
原代码
import shapelets as sh from shapelets.apps import DataApp app = DataApp(name="13_table", description="table") session = sh.sandbox() data = session.from_csv("/root/test_10:04:2023/Resources/mitdb102.csv") data=data.head() print(data.columns) data = session.from_csv("/root/test_10:04:2023/Resources/mitdb102.csv", header=1) table1 = app.table(data=data ) app.place(table1) app.register()
数据预览
column0 column1 column2 -------------- --------- --------- VARCHAR VARCHAR VARCHAR -------------- --------- --------- 'Elapsed time' 'V5' 'V2' 'seconds' 'mV' 'mV' 0.000 -0.200 0.005 0.003 -0.200 0.005 0.006 -0.200 0.005 [5 rows x 3 columns]
解决方法
由于session.from_csv不支持header参数,可通过手动指定列名并过滤无效行来解决:
import shapelets as sh from shapelets.apps import DataApp app = DataApp(name="13_table", description="table") session = sh.sandbox() # 导入完整CSV数据 full_data = session.from_csv("/root/test_10:04:2023/Resources/mitdb102.csv") # 提取第3行(索引为2)作为列名,去除单引号 column_names = [col.strip("'") for col in full_data.iloc[2].values] # 从第5行(索引为4)开始加载有效数值数据 data = full_data.iloc[4:] # 替换列名 data.columns = column_names # 将数据转换为数值类型 data = data.astype(float) # 验证数据结构 print(data.head()) # 创建并放置表格组件 table1 = app.table(data=data) app.place(table1) app.register()
说明
- 先导入完整数据,避免遗漏列名行
- 提取第3行作为列名(对应数据里的
'Elapsed time'、'V5'、'V2'),并去掉字符串两端的单引号 - 跳过前4行(前两行是类型说明,第三行是列名,第四行是单位),从第五行开始取有效数值数据
- 转换数据类型为float,确保表格能正确展示数值内容
内容的提问来源于stack exchange,提问作者Willam Singhs
相关产品推荐
相关产品推荐

