为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫将多列相乘以生成新的 df

熊猫将多列相乘以生成新的 df

慕姐8265434 2021-05-31 13:39:31
我从两个数据框开始 - 一个填充了一周中某天的虚拟变量,另一个填充了一天中的某个小时的虚拟变量(HE - 小时结束)。df1 = 星期几 = nxm,其中 n 是观察次数,m 是 6:    Mon Tue Wed Thu Fri Sat0   1   0   0   0   0   01   0   1   0   0   0   02   0   0   1   0   0   03   0   0   0   1   0   0df2 = 一天中的小时数 = nxl,其中 n 是 obs 的数量,m 是 23:    HE1 HE2 HE3 HE4 HE5 ... HE22 HE230   1   0   0   0   0   ... 0    01   0   1   0   0   0   ... 0    02   0   0   1   0   0   ... 0    03   0   0   0   1   0   ... 0    0我想创建一个尺寸为 nx(m 乘以 l)的新 df,其中 m 乘以 l = 6*23 = 138:    MonHE1 MonHE2 MonHE3 MonHE4 MonHE5 ... SatHE22 SatHE230   1      0      0      0      0      ... 0       01   0      1      0      0      0      ... 0       02   0      0      1      0      0      ... 0       03   0      0      0      1      0      ... 0       0我成功了:hoursXdays = pd.DataFrame()Mon = hours.multiply(days['Mon'],axis='index').add_prefix('Mon')Tue = hours.multiply(days['Tue'],axis='index').add_prefix('Tue')Wed = hours.multiply(days['Wed'],axis='index').add_prefix('Wed')Thu = hours.multiply(days['Thu'],axis='index').add_prefix('Thu')Fri = hours.multiply(days['Fri'],axis='index').add_prefix('Fri')Sat = hours.multiply(days['Sat'],axis='index').add_prefix('Sat')hoursXdays = pd.concat([Mon, Tue, Wed, Thu, Fri, Sat],axis=1)我将需要为更多的 dfs 执行此操作,而不仅仅是这几个。如果有任何方法可以概括这一点,我将不胜感激。基本上,pandas 有没有办法将两个数据帧的维度 nxm、nxl 相乘,以生成维度为 nx(m 乘以 l)的新 df?
查看完整描述

2 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

你可以在这里使用 for 循环

pd.concat([hours.multiply(days[x],axis='index').add_prefix(x) for x in days.columns],1)


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号