答案 0 :(得分:2)
您可以先使用boolean indexing
进行过滤,然后通过DataFrame.assign
将Z
设置为Col3
,然后使用concat
将其与原始文件合并,然后按照{{3}进行索引排序}和stabble算法mergesort
,最后由DataFrame.sort_index
和RangeIndex
创建默认drop=True
:
df = pd.DataFrame({
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'Col3':list('aXcdXf'),
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')
})
df = (pd.concat([df, df[df['Col3'].eq('X')].assign(Col3 = 'Z')])
.sort_index(kind='mergesort')
.reset_index(drop=True))
print (df)
B C Col3 D E F
0 4 7 a 1 5 a
1 5 8 X 3 3 a
2 5 8 Z 3 3 a
3 4 9 c 5 6 a
4 5 4 d 7 9 b
5 5 2 X 1 2 b
6 5 2 Z 1 2 b
7 4 3 f 0 4 b