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

在R语言中如何拆分数据框的species列并生成新行?

拆分DataFrame中逗号分隔的多值列并保留其他列

针对你需要拆分species列中逗号分隔的多物种值、同时保留对应time和loc的需求,可以用Python的pandas库快速实现,核心是字符串分割+行展开的组合操作,具体步骤如下:

实现代码

1. 构造/读取数据

先基于你的示例构造输入数据框(如果是从文件读取,替换为pd.read_csv()等方法即可):

import pandas as pd

data = {
    'species': ['Barbar,Barbar', 'Barbar', 'Barbar,Pippip', 'Barbar,Pippip,Hypsav', 'Pippip,Barbar', 'Barbar,Pippip'],
    'time': ['9:30', '10:37', '12:03', '09:52', '07:45', '00:00'],
    'loc': [1, 4, 2, 5, 5, 3]
}
df = pd.DataFrame(data)

2. 拆分并展开多行

通过str.split(',')将species列的字符串转为物种列表,再用explode()方法将列表中的每个元素单独拆分为一行,同时保留对应的time和loc值:

# 拆分species列并展开为多行
df_split = df.assign(species=df['species'].str.split(',')).explode('species')

3. 处理带空格的特殊情况

如果你的species列中存在逗号加空格的分隔(比如"Barbar, Pippip"),可以在分割后去除每个物种名的空格:

# 处理带空格的分隔场景
df_split = df.assign(
    species=df['species'].str.split(',').apply(lambda x: [s.strip() for s in x])
).explode('species')

输出结果

执行上述代码后,df_split的内容将完全符合你的期望,例如原行Barbar,Pippip,Hypsav | 09:52 | 5会被拆分为:

speciestimeloc
Barbar09:525
Pippip09:525
Hypsav09:525

所有包含多物种的行都会被正确拆分,单物种的行保持原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:14:54