You need to enable JavaScript to run this app. 如何从dataframe按标签提取多组子集,转换为numpy数组操作可行吗?
优惠活动
大模型
产品
解决方案
定价
更多

如何从dataframe按标签提取多组子集,转换为numpy数组操作可行吗?

问题解答

核心结论

先将数据转换为numpy数组再拆分标签完全可以实现你的需求,但操作流程不如直接使用pandas原生方法简洁高效,两种实现方式如下:

实现方案

方案1:转numpy数组实现

代码步骤如下:

import numpy as np
import pandas as pd

# 1. 转换为numpy数组
arr = df.to_numpy()
# 2. 提取Label列(索引为3)
label_arr = arr[:, 3]

# 3. 生成各子集的布尔掩码
# 仅包含chair的行
mask_chair = label_arr == 'chair'
# 包含chair和table的行
mask_chair_table = np.isin(label_arr, ['chair', 'table'])
# 包含三个标签的行
mask_all = np.isin(label_arr, ['chair', 'table', 'drawer'])

# 4. 转换回DataFrame
df_chair = pd.DataFrame(arr[mask_chair], columns=df.columns)
df_chair_table = pd.DataFrame(arr[mask_chair_table], columns=df.columns)
df_all = pd.DataFrame(arr[mask_all], columns=df.columns)

方案2:pandas原生实现(更推荐)

无需转换数据格式,直接用布尔索引即可完成,代码更简洁,性能也更优:

# 仅包含chair的行
df_chair = df[df['Label'] == 'chair']
# 包含chair和table的行
df_chair_table = df[df['Label'].isin(['chair', 'table'])]
# 包含三个标签的行
df_all = df[df['Label'].isin(['chair', 'table', 'drawer'])]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:09:03