如何将嵌套Price列表展开为平级列表适配Pandas DataFrame?
解决嵌套列表展开为平级列表的问题
问题原因
你使用append()方法时,会把每个DataFrame的Price列转成的子列表作为单个元素追加到price大列表中,最终形成嵌套结构,导致存入DataFrame时每个单元格是一个子列表,而非单个数值。
解决方案
1. 直接修改循环:将append改为extend
把原代码中的append替换成extend,它会把子列表里的所有元素逐个加入大列表,直接得到扁平结构:
# 初始化空列表 price = [] # 遍历DataFrame列表 for df in list_of_dfs: # 用extend替代append,逐个添加Price列的元素 price.extend(df['Price'].tolist()) # 后续创建DataFrame的代码不变 columns = ['Current Time', 'Price', 'Moving Average', 'Action'] data = pd.DataFrame(columns=columns) data['Price'] = price data.to_csv('test.csv')
2. 用列表推导式快速生成扁平列表
更简洁的写法,一行生成扁平的price列表:
price = [price_val for df in list_of_dfs for price_val in df['Price'].tolist()] # 后续代码同上
3. 直接用Pandas合并(最优方案)
既然你本身是处理DataFrame列表,完全可以跳过手动处理列表的步骤,直接用pd.concat合并所有DataFrame的Price列,效率更高:
# 合并所有DataFrame的Price列,重置索引 combined_prices = pd.concat([df['Price'] for df in list_of_dfs], ignore_index=True) # 创建DataFrame并赋值 columns = ['Current Time', 'Price', 'Moving Average', 'Action'] data = pd.DataFrame(columns=columns) data['Price'] = combined_prices data.to_csv('test.csv')
内容的提问来源于stack exchange,提问作者La Myass
相关产品推荐
相关产品推荐

