我有一个像这样的数据框 -
我想要做的是,只要 Col3 中有“X”,该行就应该重复,并且“X”应该更改为“Z”。结果必须如下所示 -
我确实尝试了一些方法,但没有任何效果! 有人可以指导如何做到这一点吗?
最佳答案
您可以先按 boolean indexing
进行过滤并按 DataFrame.assign
将 Z
设置为 Col3
,与原件一起加入 concat
,按 DataFrame.sort_index
排序索引使用稳定算法mergesort
并最后通过DataFrame.reset_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
关于python - Pandas,根据条件复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297867/