拆垛一个多指标熊猫数据帧,同时保持相同的列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拆垛一个多指标熊猫数据帧,同时保持相同的列相关的知识,希望对你有一定的参考价值。
我目前正试图从一个数据帧中的特定列中提取文本数据,并将其保存到一个新的数据帧。使用下面的代码片段,我能提取我想要的图案,但对我的生活我无法弄清楚如何将其格式化我喜欢的方式。我的当前数据帧有一个多索引和四列,如下图所示。在数据帧有每个指标对应的0-4个球员的名字,我想他们都在同一行。在每个地方有相应的指数多行情况下,存在第一排的玩家的名字上面是第二次在一个空白单元格,我只是想给这些行的第一行与结合,更换空白玩家名称(如果有的话)直接在他们下面。有没有什么办法,我可以做到这一点?任何帮助,将不胜感激。
regex_df = play_by_play_df['Play'].str.extractall(r'(. )(.+?)( scored)|(.+?)( homered)|(.+?)( balked to score)|(.+?)( advanced on a wild pitch to score)|(.+?)( advanced on error to score)')[[1,3,5,7,9]].unstack(level='match').stack(level=0)
这是行代码的输出。
match 0 1 2 3
2 1 Jason Heyward None None None
13 1 Kolten Wong None None None
38 1 Matt Carpenter None None None
91 3 JD Martinez None None None
94 1 NaN Yoenis Cespedes None None
3 Alex Avila NaN None None
127 1 Yoenis Cespedes None None None
这就是我想我的数据帧的样子。
我的最终目标是要提取得分上给定的发挥每个球员的名字,并存储在一个新列名。下面是包含五个独特模式名称是从提取五个单独播放的例子:
Play
2 Matt Holliday singled to right (Liner). Jason Heyward scored.
91 JD Martinez homered (Fly).
256 Lorenzo Cain advanced on a wild pitch to score.
331 Billy Hamilton balked to score. Joey Votto advanced to 2B.
8378 Nick Hundley advanced on error to score. DJ LeMahieu advanced to 2B on error. Error by Chris Heston.
我想有被添加到该数据帧中的四个附加列,每个包含打进了球员的姓名(最多四个玩家得分在给定的戏可以有)。这里显然会很多空细胞,因为它是罕见的,有四名球员得分上一个玩。
答案
我真的很感激所有帮助家伙!很抱歉,如果我的问题是很差提出。做一些挖后,我终于固定我的问题。该解决方案是令人沮丧的简单。
regex_df = play_by_play_df['Play'].str.extractall(r'(. )(.+?)( scored)|(.+?)( homered)|(.+?)( balked to score)|(.+?)( advanced on a wild pitch to score)|(.+?)( advanced on error to score)')[[1,3,5,7,9]].unstack(level='match').stack(level=0).reset_index(level=1, drop=True)
regex_df = regex_df.groupby(regex_df.index).first()
所有我落得这样做丢弃多指标的第一个水平,使得它如此有一些行具有相同索引。从那里,我刚通过索引使用GROUPBY()。第一()来组并迫使非NaN值到最上面一行。我的结果是这样的:
以上是关于拆垛一个多指标熊猫数据帧,同时保持相同的列的主要内容,如果未能解决你的问题,请参考以下文章