使用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. 将两张表分别拆分为专业课与非专业课(结果为四张表)。
  2. 将两张专业课的分数表和两张非专业课的分数表分别合并。
  3. 不使用步骤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。您可以根据您的需求选择最合适的方法。

Pandas数据处理:合并和拆分DataFrame

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

免费AI点我,无需注册和登录