为了账号安全,请及时绑定邮箱和手机立即绑定

从多个数据表创建具有多对多关系的数据表

从多个数据表创建具有多对多关系的数据表

饮歌长啸 2022-07-12 10:10:32
我希望我的问题首先有意义。所以我有几个 csv 文件,我想将它们合并到一个 DataFrame 中,每个 DataFrame 的结构都相似,每年都会在一个对象上记录一个特定的指标。每个 DataFrame 都由某个类别分隔。例如,简化版本是每个班级的学生成绩:DF1: MathYear . Student1 . Student2  ... Student500 . Student5012001 .   90     .    84     ...     92     .     652002 .   84     .    62     ...     70     .    100...2020 .   75     .    43     ...     50      .    83DF2: ScienceYear . Student1 . Student2  ... Student500 . Student5012001 .   56     .    70     ...     82     .     992002 .   76     .    55     ...     70     .     80...2020 .   75     .    43     ...     50      .    83DF3: HistoryYear . Student1 . Student2  ... Student500 . Student5012001 .   90     .    84     ...     92     .     652002 .   84     .    62     ...     70     .    100...2020 .   75     .    43     ...     50      .    83我希望将这些数据帧组合成一个具有以下结构的数据帧Year  .  Student  .  Math  .  Science  . English我的尝试是像这样创建一个新的空 DataFrame:import pandas as pdcombinedDf = pd.DataFrame({'Year':[], 'Student':[], 'Math':[], 'Science':[], 'English':[]})然后尝试手动迭代每个数据帧,循环遍历每一行并将数据附加到组合Df。因此,对于数学表,我必须为科学和英语值添加 None 和 None,直到我在相关数据框中迭代这些值,以便我可以将它们插入到组合 Df 中。这很快就变得非常令人沮丧,因为有时其中一张桌子缺少一年或一名学生。所以我的问题是:有没有更简单的方法来合并这些 DataFrames?我想它不应该这么复杂,但我似乎找不到更简单的方法来解决它。
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

你可以concat试试stack

s=pd.concat([df1,df2,df3],keys=['math','scie','his']).\
      set_index('Year',append=True).stack().unstack(level=0).reset_index()


查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信