loutsi1
loutsi1

Reputation: 25

duplicate specific rows of a dataframe based on column values

hi I have the following data frame

  weather     day      month       activity
  sunny     Monday     April      go for cycling
  raining   Friday     December   stay home

what I want is to duplicate the rows by 5 times without taking into account the activity column

so the output should be

weather     day      month       activity
 sunny     Monday     April      go for cycling
 sunny     Monday     April
 sunny     Monday     April
 sunny     Monday     April
 sunny     Monday     April
 raining   Friday     December   stay home
 raining   Friday     December
 raining   Friday     December
 raining   Friday     December
 raining   Friday     December
 raining   Friday     December

Upvotes: 0

Views: 45

Answers (1)

jezrael
jezrael

Reputation: 863741

Use Index.repeat with DataFrame.loc for repeated rows and then replace duplicated activity by Series.mask with Index.duplicated:

df = df.loc[df.index.repeat(5)]
df['activity'] = df['activity'].mask(df.index.duplicated(), '')
df = df.reset_index(drop=True)
print (df)
   weather     day     month        activity
0    sunny  Monday     April  go for cycling
1    sunny  Monday     April                
2    sunny  Monday     April                
3    sunny  Monday     April                
4    sunny  Monday     April                
5  raining  Friday  December       stay home
6  raining  Friday  December                
7  raining  Friday  December                
8  raining  Friday  December                
9  raining  Friday  December                

Upvotes: 5

Related Questions