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

pandas如何为DataFrame新建列并迁移首列指定数据到新列

pandas 奇偶行拆分迁移数据实现方法

原始数据为「歌曲名-歌词」两行交替存储的单列表格,按索引奇偶位拆分后重组即可实现需求,操作如下:

  • 若原始DataFrame索引不是从0开始的连续整数,先执行重置索引避免取数错位:
# 替换df为实际使用的原始DataFrame变量名
df = df.reset_index(drop=True)

方法1:索引筛选(兼容性强)

通过索引对2取模的结果,分别提取偶数位的歌曲名、奇数位的歌词,重置索引后拼接为新表,即使存在少量数据行数异常也不会直接报错,方便后续排查错位问题:

# 提取偶数索引位的歌曲名称
title_series = df.loc[df.index % 2 == 0, "Lyrics"].reset_index(drop=True)
# 提取奇数索引位的歌词内容
lyric_series = df.loc[df.index % 2 == 1, "Lyrics"].reset_index(drop=True)

# 组装为目标结构的新DataFrame
result = pd.DataFrame({
    "Lyrics": lyric_series,
    "Title": title_series
})

方法2:数组重排(写法精简)

如果确认数据完全是「名称+歌词」成对出现、总行数为偶数,可以直接转numpy数组重排,代码更短、运行速度更快:

# 将单列数据按每2行一组折叠
folded_data = df["Lyrics"].to_numpy().reshape(-1, 2)
# 生成新表,折叠后第一列为偶数位的名称、第二列为奇数位的歌词,调整列顺序匹配目标结构
result = pd.DataFrame(folded_data, columns=["Title", "Lyrics"])[["Lyrics", "Title"]]

两种方法输出结果一致:新表Lyrics列仅保留歌词内容,新增Title列存储对应歌曲名,行数为原表的1/2,完全匹配预期结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:48:15