我试图将几个特定的列乘以多个行的一部分,并根据每个结果创建一个新列。我在以前的stackoverflow问题或google中都找不到我的问题的答案,所以也许你们中的一个可以提供帮助。
我想指出的是,我是Python的初学者,因此对于任何明显的问题或奇怪的代码,我们深表歉意。
因此,对于Doctor_1的Hospital Rank列,我想将其所有数字乘以Hospital_1的Doctor Rank列第一行的值,直到Doctor by Hospital_10的列Rank。这将导致:
1*1
2*1
3*1
4*4
...
等等。我想为每个Doctor_列执行此操作。因此,对于Doctor_2,其值应乘以所有那十列的第二行(Hospital_。Doctor_3的DoctorRank,再乘以第三行,依此类推。
到目前为止,我已经在新的DataFrame中将“按Hospital_列的Doctor Rank”转换为:
并尝试将其乘以Doctor_列的医院等级的DataFrame。在此,第一个df的第一列应乘以第二个df的第一列。(和第二列*第二列,等等):
但是我目前的公式
preferences_of_doctors_and_hospitals_doctors_ranking.mul(preferences_of_doctors_and_hospitals_hospitals_ranking_transposed)
有人知道我在做什么错吗,我该如何解决?也许我可以编写一个for循环,以便为列的每个乘法创建一个新列?因此,DF3的Multiplication_column_1 = DF1的第1列* DF2的第1列,DF3的Multiplication_column_2 = DF1的第2列* DF2的第2列。
先感谢您!
杰夫
您可以使用filter
和values
首先过滤列来创建多个二维数组:
arr = df.filter(like='Rank of Hospital by').values * df.filter(like='Rank of Doctor by').values
要么:
arr = (preferences_of_doctors_and_hospitals_doctors_ranking.values *
preferences_of_doctors_and_hospitals_hospitals_ranking_transposed.values)
注意-在两个过滤后的DataFrame中,必须具有相同的列顺序,相同长度的列名称和索引。
获取2d数组,因此通过构造函数创建DataFrame并join
使其原始:
df = df.join(pd.DataFrame(arr, index=df.index).add_prefix('Multiplied '))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句