我有一个导入为pandas数据帧的文本文件:
a b c d e
index
0 18 1 1 -30.47 0.746
1 19 1 1 -30.47 0.751
2 20 1 1 -30.47 0.801
3 33 2 1 -30.47 1.451
4 34 2 1 -30.47 1.534
5 35 2 1 -30.47 1.551
6 49 3 1 -30.47 2.297
7 50 3 1 -30.47 2.301
8 51 3 1 -30.47 2.351
9 64 4 1 -30.47 3.001
10 65 4 1 -30.47 3.085
11 66 4 1 -30.47 3.101
12 346 1 2 -28.47 0.601
13 347 1 2 -20 0.682
14 348 1 2 -28.47 0.701
15 362 2 2 -28.47 1.445
16 363 2 2 -28.47 1.451
17 364 2 2 -28.47 1.501
18 377 3 2 -28.47 2.151
19 378 3 2 -28.47 2.233
20 379 3 2 -28.47 2.251
21 392 4 2 -28.47 2.901
22 393 4 2 -28.47 2.996
23 394 4 2 -28.47 3.001
24 675 1 3 -25 0.596
25 676 1 3 -26 0.601
26 677 1 3 -22 0.651
27 690 2 3 -26.47 1.301
28 691 2 3 -26.47 1.384
29 692 2 3 -26.47 1.401
30 705 3 3 -26.47 2.051
31 706 3 3 -26.47 2.147
32 707 3 3 -26.47 2.151
33 721 4 3 -26.47 2.851
34 722 4 3 -26.47 2.935
35 723 4 3 -26.47 2.951
我一直在尝试重新组织数据帧,如下所示:对于第二列中的每个值,例如值1,第三列和第四列中有多个相应的值。例如
值1(第一列)对应于:值1(第三列), - 3.4(第四列); 值1(第3列), - 3.4(第4列);值1(第3列),-3.47(第4列).....值3(第3列), - 25(第4列);值3(第3栏), - 26(第4栏);值3(第3栏), - 22(第4栏)
等等。我想创建一个新的数据框,其中对于值1,还有其他三个对应的列1,2和3,包含原始列4的三个值的平均值。输出应如下所示:
col 1,col 2,col 3,col 4
1平均值(-3.47,-3.47,-3.47)平均值(-28.47,-20,-20.47)平均值(-25,-26,-22)
输出应包含第一列的所有值,在本例中为1,2,3和4(表4x3)。我不是python的专家,除了在couple中匹配值之外,我不知道我应该如何处理这个任务。任何帮助都非常欢迎!
答案 0 :(得分:0)
IIUC:
df.groupby([2,3])[4].mean().reset_index(name='Mean').pivot(columns=3,index=2,values='Mean')
输出:
3 1 2 3
2
1 -30.47 -25.646667 -24.333333
2 -30.47 -28.470000 -26.470000
3 -30.47 -28.470000 -26.470000
4 -30.47 -28.470000 -26.470000