根据列值复制数据框的特定行

duplicate specific rows of a dataframe based on column values

您好,我有以下数据框

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

我想要的是将行复制 5 次而不考虑 activity 列

所以输出应该是

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

使用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