如何从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___
相关产品推荐
相关产品推荐

