You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pythonic方法将pandas DataFrame每行拆分为独立DataFrame的方案推荐

最佳Pythonic实现方案

推荐优先使用列表推导式+iloc切片的方式实现,把拆分后的行级DataFrame统一存储在列表中,无需提前感知原DataFrame的行数,完全适配动态行数场景,代码简洁易维护。

核心实现代码

import pandas as pd
from numpy.random import randn

# 原有示例DataFrame
df = pd.DataFrame(randn(3,3), columns=['column 1', 'column 2', 'column 3'], index = ['row 1', 'row 2', 'row 3'])

# 核心拆分逻辑:每一行转为独立DataFrame,存入列表
row_dfs = [df.iloc[[i]] for i in range(len(df))]

注意:这里使用iloc[[i]]而非iloc[i],是为了保证返回结果为DataFrame类型而非Series,自动保留原有的列信息。

访问与操作方式

拆分后的所有行DataFrame都可以通过列表下标直接访问,支持所有pandas DataFrame原生操作:

# 访问第一个行DataFrame
print("dataframe 1:")
print(row_dfs[0])

# 单独修改第二个行DataFrame的某一列值,不会影响原DF和其他行DF
row_dfs[1]['column 1'] = 999
print("修改后的dataframe 2:")
print(row_dfs[1])

可选方案:按原索引存储为字典

如果原DataFrame的索引有业务含义,也可以用字典存储,方便通过原索引直接取值:

row_df_dict = {idx: df.loc[[idx]] for idx in df.index}
# 直接通过原索引访问
print(row_df_dict['row 3'])

方案优势

  • 完全适配任意行数的原DataFrame,无需提前固定长度
  • 所有拆分后的DataFrame完整保留原列名、原索引信息
  • 性能优于iterrows遍历方案,代码简洁符合Pythonic风格
  • 列表/字典是Python原生数据结构,操作无额外学习成本,避免动态生成变量导致的命名空间污染问题

内容的提问来源于stack exchange,提问作者Lucas Schwartz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:36:00