如何用Pandas按Team与y值提取JSON文件中的x数组列表?
用Pandas按team和y值提取x数组的解决方案
1. 读取JSON文件到DataFrame
你的JSON文件是每行一个独立JSON对象的格式,用Pandas读取时需要指定lines=True:
import pandas as pd # 替换为你的JSON文件路径 df = pd.read_json('your_data.json', lines=True)
2. 提取单个条件的x数组列表
比如提取team="A"且y="Contemporary"的所有x数组:
# 筛选条件并提取x列,转成列表 target_x_lists = df[(df['team'] == 'A') & (df['y'] == 'Contemporary')]['x'].tolist() # 输出结果(每个元素是一个x数组) print(target_x_lists)
3. 批量按team-y组合提取(推荐用groupby,无需手动循环)
Pandas的groupby可以高效实现按team和y分组提取,比手动循环更简洁高效:
# 按team和y分组,将每组的x数组合并为列表,转成字典便于查询 grouped_x = df.groupby(['team', 'y'])['x'].apply(list).to_dict() # 示例:查询team="A"、y="Contemporary"的x数组列表 print(grouped_x.get(('A', 'Contemporary'), []))
4. 嵌套双层循环实现(仅作参考,不推荐)
如果一定要用嵌套循环,先获取所有唯一的team和y值,再逐个组合筛选:
# 获取所有不重复的team和y值 unique_teams = df['team'].unique() unique_y = df['y'].unique() # 用字典存储每个team-y组合对应的x数组列表 result = {} for team in unique_teams: for y_val in unique_y: # 筛选当前组合的x数组 filtered_x = df[(df['team'] == team) & (df['y'] == y_val)]['x'].tolist() if filtered_x: # 只保留有数据的组合 result[(team, y_val)] = filtered_x # 输出所有结果 print(result)
内容的提问来源于stack exchange,提问作者Behnoosh Mohammadzadeh
相关产品推荐
相关产品推荐

