熊猫,根据条件重复一行

时间:2019-10-09 05:59:34

标签: python pandas

我有一个像这样的数据框-

enter image description here

我想做的是,每当Col3中有“ X”时,该行应重复,并且“ X”应更改为“ Z”。结果必须看起来像这样-

enter image description here

我确实尝试了几种方法,但是没有任何效果! 有人可以指导如何做吗。

1 个答案:

答案 0 :(得分:2)

您可以先使用boolean indexing进行过滤,然后通过DataFrame.assignZ设置为Col3,然后使用concat将其与原始文件合并,然后按照{{3}进行索引排序}和stabble算法mergesort,最后由DataFrame.sort_indexRangeIndex创建默认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