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

如何按索引分批选取行并保存至同一DataFrame的不同列?

没问题,我来给你一步步讲清楚怎么实现这个需求,用Pandas就能轻松搞定~

实现按索引分块并合并为多列DataFrame

首先假设你已经有了一个原始的大DataFrame(比如叫df_raw),我们的目标是把它按每30行一个块拆分,再把每个块作为新DataFrame的一列,重复操作直到处理完所有数据。下面是具体的实现步骤和代码示例:

1. 准备工作(导入库+示例数据)

先导入Pandas,没安装的话先执行pip install pandas安装。这里我造了个示例数据方便你测试,你替换成自己的真实数据即可:

import pandas as pd

# 生成120行的单列DataFrame作为示例
df_raw = pd.DataFrame({'原始数据': range(120)})

2. 核心实现代码

我们用循环重复分块+合并的操作,关键用iloc按位置取行,再用pd.concat按列拼接:

# 定义每个块的行数(你要的30行)
block_size = 30
# 初始化空的结果DataFrame
new_df = pd.DataFrame()

# 计算能分成多少个完整的30行块
total_blocks = len(df_raw) // block_size

# 循环处理每个块
for block_num in range(total_blocks):
    # 计算当前块的起始/结束索引(iloc是左闭右开,所以end_idx=start+30)
    start_idx = block_num * block_size
    end_idx = start_idx + block_size
    
    # 取出当前块的行数据
    current_block = df_raw.iloc[start_idx:end_idx]
    
    # 给当前块的列重命名,避免重复列名(比如第1组数据、第2组数据...)
    current_block.columns = [f'第{block_num+1}组数据']
    
    # 把当前块拼接到结果DataFrame的右侧(按列拼接,axis=1)
    new_df = pd.concat([new_df, current_block], axis=1)

# 查看前几行结果
print(new_df.head())

3. 处理剩余行(可选)

如果你的原始数据行数不是30的整数倍(比如100行会剩下10行),可以选两种处理方式:

  • 丢弃剩余行:循环前先截断数据
    remaining_rows = len(df_raw) % block_size
    if remaining_rows != 0:
        df_raw = df_raw.iloc[:-remaining_rows]  # 去掉最后剩余的行
    
  • 保留剩余行:把剩余行作为最后一个块,不足的位置会自动填充NaN
    # 额外处理剩余行
    remaining_rows = len(df_raw) % block_size
    if remaining_rows != 0:
        start_idx = total_blocks * block_size
        current_block = df_raw.iloc[start_idx:]
        current_block.columns = [f'第{total_blocks+1}组数据']
        new_df = pd.concat([new_df, current_block], axis=1)
    

关键知识点解释

  • iloc[start:end]:按位置索引取行,左闭右开,比如0:30会取索引0到29的30行数据
  • pd.concat([df1, df2], axis=1):按列拼接两个DataFrame,把第二个的列加到第一个的右侧
  • 列重命名:必须给每个块的列起不同名字,否则拼接后会出现重复列名,导致数据混乱

执行完后,new_df就是你想要的结果——每个30行的块对应一列,所有数据都存在同一个DataFrame里啦~

内容的提问来源于stack exchange,提问作者Amit Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:57:27