我试图将几个特定的列乘以多个行的一部分,并根据每个结果创建一个新列。我在以前的stackoverflow问题或google中都找不到我的问题的答案,所以也许你们中的一个可以提供帮助。
我想指出的是,我是Python的初学者,因此对于任何明显的问题或奇怪的代码,我们深表歉意。
这是我的DataFrame当前的样子:
因此,对于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
创建列来创建多个2d数组:
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 '))
关于python - 尝试将特定的列乘以Pandas DataFrame(Python)中多行的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54403482/