【发布时间】:2022-11-18 02:06:33
【问题描述】:
第一次在这里发帖并且是 Python 的新手,如果我遗漏了下面的任何关键信息,请提前致歉。
本质上,我有一个大的 CSV 文件,我可以在脚本上稍微清理一下,其中包含超过 150 英里数据的各种数值,每条数据线都是一英尺。在我稍微清理一下文件后,表格通常如下所示:
ABC Mile Ft Param1
A 1 1000 0.1234
A 1 1001 0.1111
A 1 1002 0.1221
A 1 1003 0.1511
B 1 1004 0.1999
B 1 1005 0.2011
B 1 1006 0.1878
B 1 1007 0.1999
C 1 1008 0.5321
C 1 1009 0.5333
C 1 1010 0.5445
C 1 1011 0.5655
C 1 1012 0.5852
A 1 1013 0.2788
A 1 1014 0.2899
A 1 1015 0.2901
A 1 1016 0.2921
A 1 1017 0.2877
A 1 1018 0.2896
对于此文件,“ABC”列将始终只等于 A、B 或 C。
我想要做的是对每组 A、B 和 C 的 Param1 数进行平均。因此,在上面的示例中,我希望获得 Param1 的平均值,当它等于 A 从 Ft 1000 到 1003 时,当它从 Ft 1004 到 1007 等于 B,从 Ft 1008 到 1012 等于 C,从 1013 到 1018 等于 A,依此类推。
我一直在研究 for 循环的使用,如下所示,但问题是我得到了 Param1 在整整一英里内等于 A 时的所有平均值,而不是每个分组。这是我到目前为止所拥有的:
for i in range(1,df['Mile'].max()):
avg_p1 = df.loc[(df['Mile'] == i) & (df['ABC'] =='A'), 'Param1'].mean()
print(avg_p1)
但在这种情况下,当 ABC = A 时,我得到了 Param1 的平均值。在上面的表格示例中,当 ABC = A 从 Ft 1000 到 1003 和 1013 到 1018 时,我想要 Param1 的平均值,作为在整个文档中重复的单独平均值。
是否需要在上面的现有循环中添加第二个 for 循环或某种 if/else 条件?对这位新手程序员的任何帮助将不胜感激:)
【问题讨论】:
标签: python pandas for-loop mean