首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一排排熊猫

一排排熊猫
EN

Stack Overflow用户
提问于 2020-03-18 15:12:21
回答 4查看 187关注 0票数 6

我有如下所示的数据格式。我想将项目分割成相同的行数。

代码语言:javascript
复制
>>> df
idx  a  
0  3  
1  5  
2  4 

从上面的数据,我想要下面的

代码语言:javascript
复制
>>> df
idx  a  
0  1  
1  2  
2  3
3  1
4  2
5  3
6  4
7  5
8  1
9  2
10  3
11  4  

我试过几种方法,但都没有成功。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-03-18 15:20:55

有趣的方式

代码语言:javascript
复制
df.a.map(range).explode()+1 # may add reset_index(), however, I think keep the original index is good, and help us convert back.
Out[158]: 
idx
0    1
0    2
0    3
1    1
1    2
1    3
1    4
1    5
2    1
2    2
2    3
2    4
Name: a, dtype: object
票数 5
EN

Stack Overflow用户

发布于 2020-03-18 15:15:41

下面是一种使用series.repeat +Groupby. cumcount假设idx是索引的方法-如果不是df.set_index('idx')['a']..rest of the code..

代码语言:javascript
复制
(df['a'].repeat(df['a']).groupby(level=0).cumcount().add(1)
        .reset_index(drop=True).rename_axis('idx'))

代码语言:javascript
复制
idx

0     1
1     2
2     3
3     1
4     2
5     3
6     4
7     5
8     1
9     2
10    3
11    4
dtype: int64
票数 5
EN

Stack Overflow用户

发布于 2020-03-18 15:24:48

下面是一个基于矮胖的视频:

代码语言:javascript
复制
a = (np.arange(df.a.max())+1)
m = a <= df.a.values[:,None]
df = pd.DataFrame(m.cumsum(1)[m], columns=['a'])

代码语言:javascript
复制
print(df)

    a
0   1
1   2
2   3
3   1
4   2
5   3
6   4
7   5
8   1
9   2
10  3
11  4
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60742389

复制
相关文章

相似问题

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