如何解决如何在应用某些功能的同时以成对的方式组合数据框中的行
我有一个将键存储为 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 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,) 和 (id1,1) 与 (id1,2,4) 进行平均以形成剩余的 2 行。
我可以想到一种迭代方法,但这会非常慢。我怎么能以适当的 pythonic/pandas 方式做到这一点?
代码:
df = pd.DataFrame(columns=['ID','Val1','Val2'],data=[['id0',20],['id0',19],['id1',5],1],4]])
解决方法
您可以在按 df.rolling
分组后使用 ID
:
out = df.groupby('ID').rolling(2).mean() \
.dropna(how='all').reset_index(level=1,drop=True)
out.index += '_' + out.groupby(level=0).cumcount().add(1).astype(str)
>>> out
Val1 Val2
id0_1 10.5 19.5
id1_1 3.0 3.0
id1_2 1.5 2.5
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。