python - Pandas中每对行的乘法
问题描述
你好我有这个数据集
Month Value
Jan 15
Feb 2
Mar 8
Apr 4
May 9
如何通过每对月份的值相乘来获得一个新的数据框?
例如像这样
Jan Feb Mar Apr May
Jan - 30 120 60 135
Feb 30 - 16 8 18
Mar 120 16 - 32 72
Apr 60 8 32 - 36
May 135 18 72 36 -
解决方案
在将 Month 设置为索引后,您可以使用带有转置数据框的点积,然后使用掩码忽略匹配的索引和列:
u = df.set_index("Month")
v = u.dot(u.T)
m = list(v.columns)==v.index.to_numpy()[:,None]
out = v.mask(m)#.rename_axis(columns=None)
print(out)
Month Jan Feb Mar Apr May
Month
Jan NaN 30.0 120.0 60.0 135.0
Feb 30.0 NaN 16.0 8.0 18.0
Mar 120.0 16.0 NaN 32.0 72.0
Apr 60.0 8.0 32.0 NaN 36.0
May 135.0 18.0 72.0 36.0 NaN
推荐阅读
- node.js - POST 请求在 Cpanel 的 NodeJs 应用程序中不起作用
- jboss7.x - jboss 7 域模式下的消息传递 HA 策略
- angular - IdentityServer 提示用户登录
- r - 如何使用 R 中的代码数据帧的信息自动重新编码
- regex - 正则表达式:提取 N 个字符之前的所有完整单词
- tsql - 需要将列拆分为行和列
- c - 我是否正确地弄清楚为什么这个while循环是无限的?
- odoo - odoo 是否在多租户系统中保持数据库连接打开?
- spring-rest - 是否可以将实时数据从 arduino 发送到服务器 api?
- sql - Yii:加入前执行where条件