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

Python3.6下Pandas根据DataFrame列值生成对应数据集的问题

解决方案

首先先修正你的DataFrame数据格式(处理列名和值里的多余点号、大小写问题),避免匹配失败:

import pandas as pd

# 构造正确的DataFrame
data = {
    'Roll': [123, 789, 445, 675],
    'marks': [56, 70, 89, 45],
    'grade': ['Fair', 'Good', 'Good', 'Fair'],
    'section': ['A', 'A', 'C', 'b'],
    'Team': ['Titans', 'Kings', 'Giants', 'Boss']
}
dm = pd.DataFrame(data)

1. 按grade筛选生成对应数据集

情况1:grade为"Fair"时生成Final

# 筛选grade等于Fair的行
fair_rows = dm[dm['grade'] == 'Fair']
# 生成目标字典,注意列名要和DataFrame一致(Roll、Team)
Final = {
    'activities': fair_rows['Team'].tolist(),
    'student': fair_rows['Roll'].tolist()
}
# 转成DataFrame展示
final_df = pd.DataFrame(Final)
print(final_df)

输出结果:

activities  student
0     Titans      123
1       Boss      675

情况2:grade为"Good"时生成Final2

# 筛选grade等于Good的行
good_rows = dm[dm['grade'] == 'Good']
# 生成目标字典
Final2 = {
    'type': good_rows['Team'].tolist(),
    'student': good_rows['marks'].tolist()
}
# 转成DataFrame展示
final2_df = pd.DataFrame(Final2)
print(final2_df)

输出结果:

type  student
0   Kings       70
1  Giants       89

2. 你之前代码的错误原因

  • 字符串比较要用==而不是is:is是比较对象内存地址,字符串比较值应该用==
  • 匹配字符串要精确一致:原数据里的grade值是Fair./Good.(带点),而你写的fair是小写且无点,导致匹配失败,需要先清洗数据或者写精确的匹配值(比如dm['grade'] == 'Fair.')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:35:13