我的pandas数据框看起来像这样:
Person ID ZipCode Gender
0 12345 882 38182 Female
1 32917 271 88172 Male
2 18273 552 90291 Female
Run Code Online (Sandbox Code Playgroud)
我想复制每一行3次,如:
Person ID ZipCode Gender
0 12345 882 38182 Female
0 12345 882 38182 Female
0 12345 882 38182 Female
1 32917 271 88172 Male
1 32917 271 88172 Male
1 32917 271 88172 Male
2 18273 552 90291 Female
2 18273 552 90291 Female
2 18273 552 90291 Female
Run Code Online (Sandbox Code Playgroud)
当然,重置索引所以它是:
0
1
2
Run Code Online (Sandbox Code Playgroud)
我尝试过如下解决方案:
pd.concat([df[:5]]*3, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
和:
df.reindex(np.repeat(df.index.values, df['ID']), …Run Code Online (Sandbox Code Playgroud) 我的问题类似于这里提出的问题.我有一个数据帧,我想重复数据帧的每一行k.伴随着它,我也想创建一个值的列0来k-1.所以
import pandas as pd
df = pd.DataFrame(data={
'id': ['A', 'B', 'C'],
'n' : [ 1, 2, 3],
'v' : [ 10, 13, 8]
})
what_i_want = pd.DataFrame(data={
'id': ['A', 'B', 'B', 'C', 'C', 'C'],
'n' : [ 1, 2, 2, 3, 3, 3],
'v' : [ 10, 13, 13, 8, 8, 8],
'repeat_id': [0, 0, 1, 0, 1, 2]
})
Run Code Online (Sandbox Code Playgroud)
下面的命令完成了一半的工作.我正在寻找添加该repeat_id列的pandas方式.
df.loc[df.index.repeat(df.n)]
Run Code Online (Sandbox Code Playgroud) 考虑如下定义的数据框:
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)