通过匹配两个不同列的值来排序python pandas数据帧并计算平均值

时间:2017-07-04 18:37:03

标签: pandas dataframe

我有一个导入为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中匹配值之外,我不知道我应该如何处理这个任务。任何帮助都非常欢迎!

1 个答案:

答案 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