如何在python中修改后在指定位置添加多行?
我有一个数据帧,我想在其中按以下方式复制行和行如何在python中修改后在指定位置添加多行?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据帧,我想在其中按以下方式复制行和行 d=pd.DataFrame({"col1":["a","b","c","d"], "col2":[12,13,14,16]}) 所需输出: 要复制行a1、a2、b1、b2吗 col1 col2 a 12 a1 12 a2 12 b 12 b1 1
d=pd.DataFrame({"col1":["a","b","c","d"],
"col2":[12,13,14,16]})
所需输出:
要复制行a1、a2、b1、b2吗
col1 col2
a 12
a1 12
a2 12
b 12
b1 12
b2 12
c 12
c1 12
c2 12
d 12
d1 12
d2 12
IIUC,您可以尝试
索引。使用groupby+cumcount重复
n = 3
out = d.loc[d.index.repeat(n)]
out = out.assign(col1=out['col1']+out.groupby("col1").cumcount()
.replace(0,'').astype(str)).reset_index(drop=True)
编辑:
对于以后重复的col1
值,可以使用助手系列作为grouper:
d=pd.DataFrame({"col1":["a","b","a","d"],"col2":[12,13,14,16],
"col3":[1,2,3,4]})
n = 3
out = d.loc[d.index.repeat(n)]
out = (out.assign(col1=out['col1']+out.groupby(out['col1'].ne(out['col1'].shift())
.cumsum()).cumcount().replace(0,'').astype(str))
.reset_index(drop=True))
print(out)
col1 col2 col3
0 a 12 1
1 a1 12 1
2 a2 12 1
3 b 13 2
4 b1 13 2
5 b2 13 2
6 a 14 3
7 a1 14 3
8 a2 14 3
9 d 16 4
10 d1 16 4
11 d2 16 4
d=pd.DataFrame({"col1":["a","b","a","d"],"col2":[12,13,14,16],
"col3":[1,2,3,4]})
n = 3
out = d.loc[d.index.repeat(n)]
out = (out.assign(col1=out['col1']+out.groupby(out['col1'].ne(out['col1'].shift())
.cumsum()).cumcount().replace(0,'').astype(str))
.reset_index(drop=True))
print(out)
col1 col2 col3
0 a 12 1
1 a1 12 1
2 a2 12 1
3 b 13 2
4 b1 13 2
5 b2 13 2
6 a 14 3
7 a1 14 3
8 a2 14 3
9 d 16 4
10 d1 16 4
11 d2 16 4