【发布时间】:2021-07-01 16:11:23
【问题描述】:
我有一个将键存储为 ID 的数据框,以及 Val1/Val2 中的一些数值:
ID Val1 Val2
id0 10 20
id0 11 19
id1 5 5
id1 1 1
id1 2 4
我想查看此数据框并成对组合行,同时获取具有相同 ID 的行的 Val1/Val2 平均值。应根据新行的 ID 对添加后缀。
这是生成的数据框:
ID Val1 Val2
id0_1 10.5 19.5
id1_1 3 3
id1_2 1.5 2.5
在这个例子中,只剩下 3 行了。 (id0, 10, 20) 与 (id0,11,19) 取平均值并合并为一行。
(id1,5,5) 与 (id1,1,1,) 平均,(id1,1,1) 与 (id1,2,4) 平均以形成剩余的 2 行。
我可以想到一种迭代方法,但这会很慢。我怎样才能以正确的 pythonic/pandas 方式做到这一点?
代码:
df = pd.DataFrame(columns=['ID', 'Val1', 'Val2'], data=[['id0', 10, 20], ['id0', 11, 19], ['id1', 5, 5], ['id1', 1, 1], ['id1', 2, 4]])
【问题讨论】:
-
您想要按 ID 与组内下一行的平均值吗?
-
没有pair能解释一下逻辑吗?
-
@Umar.H 总会有至少一对
-
@ifly6 不,它应该对之前存在的旧数据进行操作。所以不要对已经平均的东西取平均值
标签: python pandas algorithm dataframe pairwise