Pandas - 计算相同数据的平均值

Edd*_*045 2 python dataframe pandas

我有一个 pandas df,它有一个项目编号列表,然后旁边有一个数字。我想以某种方式获得所有相同项目编号及其旁边的数字的平均值。

这是数据框的一部分:

Item ID        Time
X32TR2639      7.142857
X32TR2639      7.142857
X36SL7708      16.714286
X36TA0029      16.714286
X36TR3016      16.714286
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Item ID        Average Time:
X32TR2639      7.142857
X36SL7708      16.714286
X36TA0029      16.714286
X36TR3016      16.714286
Run Code Online (Sandbox Code Playgroud)

我希望每个项目 ID 都有一个平均时间,但是如果该项目 ID 有多个副本,则取它们的平均值

这只是数据框的一小部分。如您所见,前两个是相同的。我想计算所有这些的平均值。因此,如果相同,请使用所有这些数字并得出平均值。因此,脚本将查找所有项目编号X32TR2639并获取其旁边的编号,然后得出平均值。

小智 6

我会建议一个简单的groupby.mean和一个reset_index.

\n
data = {"Item ID":['X32TR2639','X32TR2639','X36SL7708','X36TA0029','X36TR3016'],'time':[7.142857,7.142857,16.714286,16.714286,16.714286]}\n\ndf = pd.DataFrame(data)\n\ndf.groupby('Item ID').mean().reset_index()\n\n     Item ID       time\n0  X32TR2639   7.142857\n1  X36SL7708  16.714286\n2  X36TA0029  16.714286\n3  X36TR3016  16.714286\n
Run Code Online (Sandbox Code Playgroud)\n

额外的

\n

我尝试过 50k 数据,这是时间性能。

\n
df\n\n              ID      time\n0      X32TR2639  0.837810\n1      X32TR2639  0.855781\n2      X36SL7708  0.322786\n3      X36TA0029  0.441353\n4      X36TR3016  0.254487\n         ...       ...\n49995  X32TR2639  0.885251\n49996  X32TR2639  0.315009\n49997  X36SL7708  0.298589\n49998  X36TA0029  0.229855\n49999  X36TR3016  0.933437\n\n[50000 rows x 2 columns]\n\n%timeit df.groupby('ID').mean().reset_index()\n4.76 ms \xc2\xb1 73.7 \xc2\xb5s per loop (mean \xc2\xb1 std. dev. of 7 runs, 100 loops each)\n
Run Code Online (Sandbox Code Playgroud)\n

groupby.mean这是在 50k 数据帧上执行重复操作后的输出数据帧。

\n
df.groupby('ID').mean().reset_index()\n\n          ID      time\n0  X32TR2639  0.493729\n1  X36SL7708  0.500936\n2  X36TA0029  0.501064\n3  X36TR3016  0.492773\n
Run Code Online (Sandbox Code Playgroud)\n