Pandas数据处理:合并和拆分DataFrame
使用Pandas合并和拆分DataFrame
本文将演示如何使用Pandas库合并和拆分DataFrame,并提供三种不同的方法来完成相同的结果。
问题:
有两张包含课程信息和分数的DataFrame:
DataFrame 1:
df_fs1 = pd.DataFrame(pd.read_csv('data/Course1.csv'))
课程名字 课程类别 学分 分数
0 思想道德修养与法律基础 思政类 3 89.0
1 云计算应用与开发 专业选修课 3 96.0
2 社会计算 专业选修课 3 78.0
3 深度学习 专业选修课 3 75.0
4 人工智能导论 专业必修课 3 84.0
DataFrame 2:
df_fs2 = pd.DataFrame(pd.read_csv('data/Course2.csv'))
课程名字 课程类别 学分 分数
0 高等数学(一) 学科基础课 4 99.0
1 数据科学与工程导论 学科基础课 3 NaN
2 专业英语 学科基础课 2 100.0
3 概率论 学科基础课 3 99.0
4 计算机系统 专业必修课 4 80.0
目标:
- 将两张表分别拆分为专业课与非专业课(结果为四张表)。
- 将两张专业课的分数表和两张非专业课的分数表分别合并。
- 不使用步骤1,直接读取两张表合并后拆分。
解决方案:
(a) 分别拆分DataFrame
# 专业课表1
df_fs1_pro = df_fs1[df_fs1['课程类别'].str.contains('专业')]
# 非专业课表1
df_fs1_nonpro = df_fs1[~df_fs1['课程类别'].str.contains('专业')]
# 专业课表2
df_fs2_pro = df_fs2[df_fs2['课程类别'].str.contains('专业')]
# 非专业课表2
df_fs2_nonpro = df_fs2[~df_fs2['课程类别'].str.contains('专业')]
(b) 合并DataFrame
# 专业课分数表
df_pro_scores = pd.concat([df_fs1_pro[['课程名字', '分数']], df_fs2_pro[['课程名字', '分数']]])
# 非专业课分数表
df_nonpro_scores = pd.concat([df_fs1_nonpro[['课程名字', '分数']], df_fs2_nonpro[['课程名字', '分数']]])
(c) 合并后再拆分
df_combined = pd.concat([df_fs1, df_fs2])
df_pro = df_combined[df_combined['课程类别'].str.contains('专业')]
df_nonpro = df_combined[~df_combined['课程类别'].str.contains('专业')]
结论:
Pandas 提供了灵活的方法来合并和拆分 DataFrame。您可以根据您的需求选择最合适的方法。

原文地址: http://www.cveoy.top/t/topic/S 著作权归作者所有。请勿转载和采集!