如何将Pandas DataFrame列表元素转为Series以适配sktime的MiniRocketMultivariateVariable
解决方案
要将DataFrame中每个列表元素转为Series并保持原行列数,关键是让每个单元格存储Series对象而非将Series展开为列。你之前的方法失效是因为applymap(pd.Series)会自动将Series的元素拆分为新列,而直接赋值pd.Series(df['dim_1'])只是把列表包装成了Series,并没有将列表内部转为Series。
实现代码
假设你的原始DataFrame名为ts_df,可以通过逐列处理的方式完成转换:
import pandas as pd # 逐列将每个列表元素转为Series for col in ts_df.columns: ts_df[col] = ts_df[col].apply(lambda lst: pd.Series(lst))
或者用更简洁的apply链式写法:
ts_df = ts_df.apply(lambda col: col.apply(pd.Series))
验证效果
转换后,你可以通过以下代码检查单元格类型:
# 检查第一行第一列的元素类型 print(type(ts_df.iloc[0, 0])) # 输出应为 <class 'pandas.core.series.Series'>
此时DataFrame的行列数与原始数据完全一致,每个单元格都是独立的Series,符合MiniRocketMultivariateVariable的输入要求。
内容的提问来源于stack exchange,提问作者mohannad rateb
相关产品推荐
相关产品推荐

