您的位置:首页 >Pandas NumPy 每组行数据相加方法
发布于2025-08-24 阅读(0)
扫一扫,手机访问

本文介绍了如何使用 Pandas 和 NumPy 结合,针对 DataFrame 中的分组数据,将组内每行特定的数据信息添加到该组的每一行中。通过 NumPy 的滚动索引技巧,高效地实现了数据的广播和扩展,避免了低效的循环操作,并提供了详细的代码示例和解释。
在数据分析中,经常会遇到需要在分组数据中进行行间操作的场景。例如,在赛马数据集中,我们可能需要将每匹马的信息添加到同一场比赛的其他马匹的信息中,以便进行更深入的比较和分析。本文将介绍如何使用 Pandas 和 NumPy 来高效地实现这一目标。
核心思路是利用 NumPy 的滚动索引功能,避免显式循环,从而提升性能。具体步骤如下:
import pandas as pd
import numpy as np
data_orig = {
'meetingId': [178515] * 6,
'raceId': [879507] * 6,
'horseId': [90001, 90002, 90003, 90004, 90005, 90006],
'position': [1, 2, 3, 4, 5, 6],
'weight': [51, 52, 53, 54, 55, 56],
}
data_orig_df = pd.DataFrame(data_orig)
def roll(g):
a = g.to_numpy()
x = np.arange(len(a))
return pd.DataFrame(a[((x[:,None] + x)%len(a)).ravel()].reshape(len(a), -1),
index=g.index,
columns=[f'{c}_{i+1}' for i in x for c in g.columns])
cols = ['meetingId', 'raceId']
out = (data_orig_df.groupby(cols)
.apply(lambda g: roll(g.drop(columns=cols)))
.reset_index(cols)
)
print(out)本文介绍了如何使用 Pandas 和 NumPy 结合,高效地将分组数据中每行的数据添加到该组的每一行中。通过 NumPy 的滚动索引技巧,避免了低效的循环操作,并提供了详细的代码示例和解释。掌握这种方法可以帮助你更高效地处理分组数据,进行更深入的数据分析。
上一篇:苏宁任性付申请攻略及开通条件详解
下一篇:漫步者蓝牙耳机怎么开机详解
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9