这是numpy广播的标准用例:
df['Values'].values - df['Values'].values[:, None]Out: array([[ 0. , -30.7, -14.5], [ 30.7, 0. , 16.2], [ 14.5, -16.2, 0. ]])
我们使用values属性访问基础的numpy数组,并
[:, None]引入了一个新轴,因此结果是二维的。
您可以将其与原始系列结合使用:
arr = df['Values'].values - df['Values'].values[:, None]pd.concat((df['Country'], pd.Dataframe(arr, columns=df['Country'])), axis=1)Out: Country GB JP US0 GB 0.0 -30.7 -14.51 JP 30.7 0.0 16.22 US 14.5 -16.2 0.0
由于@Divakar,也可以使用以下命令生成数组:
arr = np.subtract.outer(*[df.Values]*2).T
在这里,我们呼吁
.outer在
subtractufunc,它适用于所有对其输入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)