You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:03:05