大Pandas顺排常模

2024-04-26 23:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据框,其中N列表示向量的坐标(例如X、Y、Z,但可以大于3D)。

我想用任意组合列的函数(例如norm:(X^2 + Y^2 + Y^2))来聚合数据帧。

我想做一些类似于hereherehere的事情,但是我想保持它的通用性,使列的数量可以更改,并且它的行为类似于

DataFrame.mean(axis = 1)

或者

DataFrame.sum(axis = 1)

Tags: 数据函数normdataframepandas数量heremean
3条回答

按名称筛选列

cols = ['X','Y','Z']
df[cols].mean(axis=1)
df[cols].sum(axis=1)
df[cols].apply(lambda values: sum([v**2 for v in values]), axis=1)

我找到了比@elyase建议的更快的解决方案:

np.sqrt(np.square(df).sum(axis=1))

纽比提供了规范。。。使用:

np.linalg.norm(df[['X','Y','Z']].values,axis=1)

相关问题 更多 >