Pandas DataFrame分组前后分组列值不一致的原因咨询
Pandas DataFrame分组前后分组列值不一致的原因咨询
我有以下代码:
sum_columns = ['p', 'q', 'r', 'Ax', 'Ay', 'Az'] avg_columns = ['Bx', 'By', 'Bz', 'G2 C03'] agg_map = {col: 'sum' for col in sum_columns} agg_map.update({col: 'mean' for col in avg_columns}) df = df.groupby(['MAC C01', 'MAC C02', 'MAC C03'], as_index=False).agg(agg_map)
分组前的DataFrame:
p q r Ax Ay Az Bx By Bz G2 C03 MAC C01 MAC C02 MAC C03 0 0.0 0.0 0.1 0 0 0 0 0 0 0.0 0.00000 0.00000 0.0 1 0.0 0.1 0.1 0 0 0 0 0 0 0.0 0.00000 0.00000 0.0 2 0.0 0.1 0.0 0 0 0 0 0 0 0.0 0.00000 0.00000 0.0 3 0.0 0.0 0.1 0 0 0 0 0 0 0.0 0.00000 0.00000 0.0 4 0.0 0.0 0.0 -34 2 251 -23 78 45 0.0 19.12377 73.07937 0.0 ... ... ... ... .. .. ... .. .. .. ... ... ... ... 14676 0.3 -0.3 -1.0 -39 -9 250 66 -23 49 0.0 19.12376 73.07938 0.0 14677 0.9 0.3 -1.0 -39 -9 250 66 -23 49 0.0 19.12376 73.07938 0.0 14678 0.5 0.1 2.5 -39 -9 250 66 -23 49 0.0 19.12376 73.07938 0.0 14679 -0.2 -0.1 1.8 -39 -9 250 66 -23 49 0.0 19.12376 73.07938 0.0 14680 -0.9 0.2 -2.3 -39 -9 250 66 -23 49 0.0 19.12376 73.07938 0.0 [14681 rows x 13 columns]
分组后的DataFrame:
MAC C01 MAC C02 MAC C03 p q r Ax Ay Az Bx By Bz G2 C03 0 0.00000 0.00000 0.0 0.000000e+00 0.2 0.3 0 0 0 0.0 0.0 0.0 0.0 1 19.12135 73.07947 75.0 1.330000e+01 6.4 -31.9 -140 0 1230 -4.0 -79.0 26.0 75.0 2 19.12135 73.07959 75.8 1.160000e+01 8.3 -47.0 -248 8 2080 1.0 -78.0 28.0 75.0 3 19.12135 73.07968 76.6 1.030000e+01 5.1 -32.9 -174 6 1560 6.0 -77.0 29.0 76.0 4 19.12136 73.07938 74.6 2.260000e+01 14.9 -56.7 -224 0 2144 -10.0 -78.0 23.0 74.0 ... ... ... ... ... ... ... ... .. ... ... ... ... ... 1452 19.12607 73.07969 184.8 8.881784e-16 -18.9 -27.7 216 -24 2240 8.0 74.0 47.0 184.0 1453 19.12608 73.07933 178.4 -1.600000e+00 15.2 -17.8 408 -16 2080 1.0 75.0 47.0 178.0 1454 19.12608 73.07941 180.1 -4.100000e+00 8.6 -19.0 328 8 1656 3.0 76.0 46.0 180.0 1455 19.12608 73.07949 181.6 -3.500000e+00 -10.8 -22.5 312 -32 1768 5.0 75.0 46.0 181.0 1456 19.12608 73.07960 183.2 2.600000e+00 -17.1 -23.9 296 -8 2296 6.0 75.0 47.0 183.0 [1457 rows x 13 columns]
我有个疑问:分组前第一个非零的MAC C01值是索引4行的19.12377,但分组后对应的分组里这个值变成了索引2行的19.12135,这两个不应该一样吗?同样,分组前最后一个MAC C01值是19.12376,但分组后却是19.12608?
我原本以为分组操作会保留分组列的唯一值,然后按指定函数聚合其他列。既然是“保留唯一值”,那分组列的第一个非零值和最后一个值应该和分组前一致才对,但实际情况并非如此。我到底哪里理解错了?
备注:内容来源于stack exchange,提问作者MsA
相关产品推荐
相关产品推荐

