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

如何在Pandas中对数据每5行重复执行转置操作?

批量处理Pandas每5行转置的解决方案

嘿,你的初始代码已经搞定了前5行的转置,要批量处理剩下的每5行数据,我给你分享两种实用的方法,都是Pandas里常用的思路:

方法一:用分组(groupby)实现高效处理

这是最符合Pandas风格的写法,不用手动写循环,效率还高:

import pandas as pd

# 读取原始数据
df = pd.read_csv('https://s3.amazonaws.com/todel162/kaggle_unicode1.txt', encoding='utf8', sep='`', header=None)

# 按每5行分组,对每组执行转置和列名设置
grouped = df.groupby(df.index // 5)
result_list = []
for _, group in grouped:
    transposed_group = group.T
    transposed_group.columns = ['task_name', 'task_description', 'task_date', 'task_prize', 'task_teams']
    result_list.append(transposed_group)

# 合并所有处理后的结果为一个完整DataFrame
final_result = pd.concat(result_list, ignore_index=True)

这里的df.index // 5会自动把每5行划为一组(比如第0-4行是一组,5-9行是下一组),每组转置后设置好列名,最后把所有组的结果拼在一起就行。

方法二:手动循环遍历每5行

如果你更喜欢直观的循环逻辑,也可以这么写:

import pandas as pd

df = pd.read_csv('https://s3.amazonaws.com/todel162/kaggle_unicode1.txt', encoding='utf8', sep='`', header=None)

result_list = []
# 以步长5遍历索引,每次取5行数据
for start_idx in range(0, len(df), 5):
    # 截取当前5行的子集
    subset = df.iloc[start_idx:start_idx+5]
    transposed_subset = subset.T
    transposed_subset.columns = ['task_name', 'task_description', 'task_date', 'task_prize', 'task_teams']
    result_list.append(transposed_subset)

final_result = pd.concat(result_list, ignore_index=True)

这个逻辑很简单:从0开始,每次跳5个索引,取对应的5行数据转置,处理完后加入结果列表,最后合并成最终的DataFrame。就算最后一组不足5行,iloc也会自动取到数据末尾,不会报错。

你可以用final_result.head(10)查看前两组的结果,确认和你手动处理前5行的结构一致~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:28:42