考虑如下定义的数据框:
import Pandas as pd
test = pd.DataFrame({
'id' : ['a', 'b', 'c', 'd'],
'times' : [2, 3, 1, 5]
})
Run Code Online (Sandbox Code Playgroud)
是否可以从中创建一个新的数据帧,其中每一行都重复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
Run Code Online (Sandbox Code Playgroud)
piR*_*red 11
使用的组合pd.DataFrame.loc和pd.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
Run Code Online (Sandbox Code Playgroud)
要模仿您的确切输出,请使用 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
Run Code Online (Sandbox Code Playgroud)