【问题标题】:pandas merging 2 dataframes of difference size, columns and freqpandas 合并 2 个不同大小、列和频率的数据帧
【发布时间】:2019-01-17 11:10:49
【问题描述】:

我一直在尝试合并 2 个不同大小和频率的 NFL 数据框,但 2 个相同的 teiamname 和 year 列,索引的第一个是团队名称和年份,并且是年份平均值,下一个是按 tm 名称和年份排序,但分为每周比赛 1-17,所以我一直在尝试合并团队名称和年份,然后给出年度平均值,即 9 列,然后每周每周(1- 17) 在 11 个不同的列上。我已经在这里待了 2 周,iv 尝试了各种方式,多索引,......我可以遍历每个 datframe 并以正确的顺序附加到一个数组但是当我尝试将该列表设为 DF 时......不行,尝试了多索引 groupby....

任何帮助将不胜感激 谢谢

       Year  Tm_name    W     L   W_L_Pct   PD     MoV  SoS   SRS  OSRS  DSRS
1  2015     1     13.0   3.0   0.813   176.0  11.0  1.3  12.3   9.0   3.4
2  2016     1      7.0   8.0   0.469    56.0   3.5 -1.9   1.6   2.4  -0.8
3  2017     1      8.0   8.0   0.500   -66.0  -4.1  0.4  -3.7  -4.0   0.2
4  2018     1      3.0  13.0   0.188  -200.0 -12.5  1.0 -11.5  -9.6  -1.9
5  2015     2      8.0   8.0   0.500    -6.0  -0.4 -3.4  -3.8  -4.0   0.3
  Week  Year    Date     Tm_name  win_loss  home_away  Opp1_team  Tm_Pnts  \
0   1   2018 2018-09-09     1        0.0       1.0       32.0       6.0     
1   2   2018 2018-09-16     1        0.0       0.0       18.0       0.0     
2   3   2018 2018-09-23     1        0.0       1.0        6.0      14.0     
3   4   2018 2018-09-30     1        0.0       1.0       28.0      17.0     
4   5   2018 2018-10-07     1        1.0       0.0       29.0      28.0     

   Opp2_pnts  Off_1stD  Off_TotYd  Def_1stD_All  Def_TotYd_All  
0    24.0       14.0      213.0        30.0          429.0      
1    34.0        5.0      137.0        24.0          432.0      
2    16.0       13.0      221.0        21.0          316.0      
3    20.0       18.0      263.0        19.0          331.0      
4    18.0       10.0      220.0        33.0          447.0    

【问题讨论】:

  • 在发布问题之前请通过stackoverflow.com/help/mcve
  • 请清楚地描述您的输入数据帧和输出数据帧期望,查看其他标记为pandas 的帖子以了解更多信息,您也可能想通过stackoverflow.com/help/how-to-ask
  • 这些是我试图合并的 2 个 DF.head(),32 个团队中的每个 DF 1 都有多年的 avgs2018-2015。 DF2 每个 32 支球队在 2018-2015 年期间都有 17 周的比赛统计数据,我试图合并它们,所以我没有任何 NAN 数据或相关行,我已经通过堆栈和文档,要么我不理解它,要么它不存在或足够具体到我的事业
  • 欢迎来到 Stack Overflow。我可以告诉你,你在写你的问题上付出了很多努力,但不幸的是,按照目前的措辞,这很令人困惑。许多文本信息很难理解:如果您提供一小部分数据样本,显示输入和所需输出,您将更有可能得到答案。祝你好运!

标签: arrays python-3.x pandas dataframe merge


【解决方案1】:

如果两个数据框中有 2 列相同,为什么不使用 pandas.Dataframe.join 来连接两个表?这样您就可以在同一行中获得团队名称和年份的所有数据。

【讨论】:

  • 从 df1 开始,它排 17 次,而不是仅仅为 df1 排,然后为该团队和来自 df2 的 17 排/游戏(“周”)。如果我放弃了。组织 cols&rows 错误它列出了每个 tm/yr 1st 的所有 df1 行(这是我想要的,但它每年为 32 支球队进行所有第 1 周的比赛,然后在第 2 周为 32 支球队进行 4 年,不无论我如何尝试,我都无法组织它,它只有 126 行,我想应该有 32 个团队乘以 4 年应该是 2000 年左右,也许我错了,我无法想象它,我需要看看它看起来如何没有被 Atom 截断
  • 好的,我仍在努力理解您的目标是什么。计算平均值的 1DF 和 17 周统计数据的 1DF 相同的年数。 NFL 赛季是否长达 17 周?输出应该是什么样子?所有周加上每年和团队的平均值?
  • 层次索引分为 3 个级别,元组 lvl_00 = result.Tm_name.values lt2.Off_1stD.values, result2.Off_TotYd.values, result2.Def_1stD_All.values, result2.Def_TotYd_All.values))跨度>
  • lvl_01 = (result.Year.values, (result.W.values, result.L.values, result.W_L_Pct.values, result.PD.values, result.MoV.values, 结果。 SoS.values, result.SRS.values, result.OSRS.values, result.DSRS.values)) lvl_02 = (result2.Week.values, (result2.Date.values, result2.win_loss.values, result2.home_away.values , result2.Opp1_team.values, result2.Tm_Pnts.values, result2.Opp2_pnts.values, 结果
  • 我问了同样的问题:bc 我被告知这个描述性不够,所以如果你认为它会有所帮助,我在这个 url 上添加了代码和 DF。 [链接]stackoverflow.com/questions/54239560/….
猜你喜欢
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 2022-01-07
相关资源
最近更新 更多