pandas on condition中的重复行

68de4m5k  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(85)

我有一个pandas dataframe:

Column1   Column2    Column3
1     A                     C
2     A         D   
3     B

如果在我的column2中是一个“D”,我想复制具有is值的行并重置索引,如下所示:

Column1  Column2    Column3
1     A                    C
2     A         D   
3     A         D   
4     B

我如何在Pandas中做到这一点?

pgx2nnw8

pgx2nnw81#

首先测试列名是否重复,如有必要,deduplicate它们:

print (df.columns[df.columns.duplicated(keep=False)])

然后用concat和排序索引连接筛选后的行:

df = df.reset_index(drop=True)

df = (pd.concat([df, df[df['Column2'].eq('D')]])
        .sort_index(kind='stable', ignore_index=True)
        .rename(lambda x: x+1))
print (df)
  Column1 Column2 Column3
1       A     NaN       C
2       A       D     NaN
3       A       D     NaN
4       B     NaN     NaN

相关问题