在数据框中重复行n次

65

考虑一个像这样定义的数据框:

import pandas as pd
test = pd.DataFrame({
    'id' : ['a', 'b', 'c', 'd'],
    'times' : [2, 3, 1, 5]
})

能否根据此创建一个新的数据框,并重复每一行 times 次,使结果如下所示:

>>> result
   id  times
0   a      2
1   a      2
2   b      3
3   b      3
4   b      3
5   c      1
6   d      5
7   d      5
8   d      5
9   d      5
10  d      5

这很公平。我想我的问题是:这可能吗?目前正在尝试使用 test.indextest.iloc[x] - 93i7hdjb
1
我认为答案是肯定的。 - Mr. T
有关编程的内容翻译为中文:有帮助。谢谢。 - 93i7hdjb
@MrT 真准确,那是一个重复的问题。 - piRSquared
1个回答

116

使用 pd.DataFrame.locpd.Index.repeat 的组合。

test.loc[test.index.repeat(test.times)]

  id  times
0  a      2
0  a      2
1  b      3
1  b      3
1  b      3
2  c      1
3  d      5
3  d      5
3  d      5
3  d      5
3  d      5
为了模仿您的确切输出,请使用reset_index
test.loc[test.index.repeat(test.times)].reset_index(drop=True)

   id  times
0   a      2
1   a      2
2   b      3
3   b      3
4   b      3
5   c      1
6   d      5
7   d      5
8   d      5
9   d      5
10  d      5

1
这太棒了。 - igorkf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接