pandas dataframe 在更改一列时将每一行复制 5 次
pandas dataframe duplicate each row 5 times while changing one column
我有数据框:
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]
最好的方法是什么?
您可以 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
我有数据框:
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]
最好的方法是什么?
您可以 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