首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >熊猫数据:将列扩展为行加上增量编号

熊猫数据:将列扩展为行加上增量编号
EN

Stack Overflow用户
提问于 2017-09-23 09:42:16
回答 1查看 50关注 0票数 0

我需要根据空格拆分score列(包含匹配结果),在两个多行中展开Pandas的一行。

这就是数据的样子

代码语言:javascript
运行
复制
A   B   score
1   2   6-1 6-2
3   4   6-4 4-6 6-3

为了实现这个目标,我使用了来自here的方法。

通过稍微修改这种方法,我的dataframe如下所示:

代码语言:javascript
运行
复制
A   B   score           sets
1   2   6-1 6-2         6-1
1   2   6-1 6-2         6-2
3   4   6-4 4-6 6-3     6-4
3   4   6-4 4-6 6-3     4-6
3   4   6-4 4-6 6-3     6-3

但是,我也希望有另一列,它代表每一匹配集的数量。这就像每一场比赛中的一组累积计数。我的问题是,如何改变上述链接的解决方案,以获得如下所需的结果:

代码语言:javascript
运行
复制
A   B   score           sets    setnumber
1   2   6-1 6-2         6-1     1
1   2   6-1 6-2         6-2     2
3   4   6-4 4-6 6-3     6-4     1
3   4   6-4 4-6 6-3     4-6     2
3   4   6-4 4-6 6-3     6-3     3

我认为在下面的代码行中某个地方需要进行适应,但我还不知道它应该如何工作:

代码语言:javascript
运行
复制
s = df['score'].str.split(' ').apply(pd.Series, 1).stack()
s.index = s.index.droplevel(-1) # to line up with df's index
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-23 09:47:47

您可以使用repeat,然后使用cumcount

代码语言:javascript
运行
复制
In [2915]: dff = df.set_index(['A', 'B'])['score'].repeat(
                            df['score'].str.split(' ').str.len()
                                 ).reset_index()

In [2916]: dff
Out[2916]:
   A  B        score
0  1  2      6-1 6-2
1  1  2      6-1 6-2
2  3  4  6-4 4-6 6-3
3  3  4  6-4 4-6 6-3
4  3  4  6-4 4-6 6-3

In [2917]: dff.assign(setnumber=dff.groupby(['A', 'B']).cumcount()+1)
Out[2917]:
   A  B        score  setnumber
0  1  2      6-1 6-2          1
1  1  2      6-1 6-2          2
2  3  4  6-4 4-6 6-3          1
3  3  4  6-4 4-6 6-3          2
4  3  4  6-4 4-6 6-3          3

您还可以通过dff获得.loc

代码语言:javascript
运行
复制
In [2923]: df.loc[df.index.repeat(df['score'].str.split(' ').str.len())]
Out[2923]:
   A  B        score
0  1  2      6-1 6-2
0  1  2      6-1 6-2
1  3  4  6-4 4-6 6-3
1  3  4  6-4 4-6 6-3
1  3  4  6-4 4-6 6-3
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46378194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档