我正在与python一起使用Pandas从两个框架开始创建一个新框架。 第一帧(称为frame1)由以下行组成:
A B C D E
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
6 6 6 6 6
7 7 7 7 7
8 8 8 8 8
9 9 9 9 9
10 10 10 10 10
11 11 11 11 11
12 12 12 12 12
13 13 13 13 13
14 14 14 14 14
15 15 15 15 15
第二帧(称为frame2)是:
A B C D E
19 19 19 19 19
24 24 24 24 24
29 29 29 29 29
34 34 34 34 34
39 39 39 39 39
44 44 44 44 44
49 49 49 49 49
54 54 54 54 54
59 59 59 59 59
64 64 64 64 64
69 69 69 69 69
74 74 74 74 74
79 79 79 79 79
84 84 84 84 84
89 89 89 89 89
94 94 94 94 94
99 99 99 99 99
现在我想用这种逻辑创建一个新的数据集:从frame1开始,每隔5行替换一次,直到frame1的末尾,然后将frame1的行替换为frame2的随机行(并从frame2中删除添加的行) 。可能的输出应该是:
A B C D E
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
59 59 59 59 59
6 6 6 6 6
7 7 7 7 7
8 8 8 8 8
9 9 9 9 9
29 29 29 29 29
11 11 11 11 11
12 12 12 12 12
13 13 13 13 13
14 14 14 14 14
84 84 84 84 84
我该怎么做?
答案 0 :(得分:2)
这很简单:
frame1.loc[4::5] = frame2.sample(frac=1).reset_index(drop=True)
其中
df.loc[4::5]
选择每个第五个元素,从df
中的第五个元素开始,然后df.sample(frac=1).reset_index(drop=True)
随机洗牌df
答案 1 :(得分:1)
一种方法是首先获取要更新的索引(我们也可以切片分配,但会遇到end
不包含的问题),然后取回{{1} },sample
的大小如下:
df2