首页 > 解决方案 > 熊猫,根据条件复制一行

问题描述

我有一个这样的数据框 -

在此处输入图像描述

我想要做的是,每当 Col3 中有“X”时,该行应该被复制并且“X”应该更改为“Z”。结果必须如下所示 -

在此处输入图像描述

我确实尝试了一些方法,但没有任何效果!有人可以指导如何做到这一点。

标签: pythonpandas

解决方案


您可以首先过滤boolean indexing并设置ZCol3by DataFrame.assign,加入原始 with ,使用 stabble 算法concat排序索引,最后通过with创建默认值:DataFrame.sort_indexmergesortRangeIndexDataFrame.reset_indexdrop=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

推荐阅读