如何在循环中从Pandas DataFrame生成对应运动的Numpy数组
按运动分组获取对应姓名的Numpy数组
首先先构建你的DataFrame:
import pandas as pd import numpy as np data = {"Names": ["Ray", "John", "Mole", "Smith", "Jay", "Marc", "Tom", "Rick"], "Sports": ["Soccer", "Judo", "Tenis", "Judo", "Tenis","Soccer","Judo","Tenis"]} df = pd.DataFrame(data)
下面提供两种实现方案:
方案一:用groupby直接遍历分组(推荐)
这是Pandas的惯用写法,数据量较大时效率更高:
# 按Sports列分组,遍历每个分组 for sport, group in df.groupby('Sports'): # 将分组内的Names列转为Numpy数组 nArray = group['Names'].to_numpy() # 此处编写你对nArray的处理逻辑 print(f"运动项目:{sport}") print(f"对应姓名数组:{nArray}\n")
方案二:先提取独特运动再逐个筛选
如果更倾向于先拿到所有独特运动再循环,可使用此方式:
# 获取所有不重复的运动项目 unique_sports = df['Sports'].unique() for sport in unique_sports: # 筛选当前运动对应的行,提取Names列转为Numpy数组 nArray = df[df['Sports'] == sport]['Names'].to_numpy() # 此处编写你对nArray的处理逻辑 print(f"运动项目:{sport}") print(f"对应姓名数组:{nArray}\n")
关键说明
to_numpy()方法可直接将Pandas的Series对象转换为Numpy数组,满足需求- 两种方案均可实现你描述的伪逻辑,方案一的代码更简洁且性能更优
内容的提问来源于stack exchange,提问作者Rolando Azevedo
相关产品推荐
相关产品推荐

