фрейм данных pandas дублирует каждую строку 5 раз при изменении одного столбца

#python #pandas #data-science #data-munging

#python #pandas #наука о данных #сбор данных

Вопрос:

У меня есть фрейм данных:

 vid_fn  V1  V2  V3
 a.avi  1   4   5 
 b.avi  7   8   1
  

Я хочу изменить дублирование каждой строки 5 раз при изменении первого столбца:

 frame_fn  V1  V2  V3
 a1.jpg  1   4   5 
 a2.jpg  1   4   5 
 a3.jpg  1   4   5 
 a4.jpg  1   4   5 
 a5.jpg  1   4   5 
 b1.jpg  7   8   1 
 b2.jpg  7   8   1 
 b3.jpg  7   8   1 
 b4.jpg  7   8   1 
 b5.jpg  7   8   1 
  

5 значений генерируются внешней функцией, поэтому при вызове

 my_func(a.avi) 
  

Я получаю:

 [a1.jpg, a2.jpg, a3.jpg, a4.jpg, a5.jpg]
  

Каков наилучший способ сделать это?

Ответ №1:

Вы можете map выполнить функцию my_func поверх vid_fn фрейма explode данных на vid_fn :

 df.assign(vid_fn=df['vid_fn'].map(my_func)).explode('vid_fn')
  .rename(columns={'vid_fn': 'frame_fn'}).reset_index(drop=True)
  

   frame_fn  V1  V2  V3
0   a1.avi   1   4   5
1   a2.avi   1   4   5
2   a3.avi   1   4   5
3   a4.avi   1   4   5
4   a5.avi   1   4   5
5   b1.avi   7   8   1
6   b2.avi   7   8   1
7   b3.avi   7   8   1
8   b4.avi   7   8   1
9   b5.avi   7   8   1