我正在尝试将一些特定列乘以多行的一部分,并根据每个结果创建一个新列。我无法在以前的 stackoverflow 问题或谷歌上真正找到我的问题的答案,所以也许你们中的一个可以提供帮助。
我想指出,我是 Python 的初学者,所以对于任何明显的问题或奇怪的代码,我们深表歉意。
因此,对于列 Rank of Hospital by Doctor_1,我想将其所有数字乘以列 Rank by Hospital_1 的第一行的值,直到列 Rank of Doctor by Hospital_10。这将导致:
1*1
2*1
3*1
4*4
...
等等。 我想为每个 Doctor_ 专栏执行此操作。因此,对于 Doctor_2,其值应乘以所有这十列的第二行(Hospital_.Doctor_3 的医生等级,乘以第三行等。
到目前为止,我已经在新的 DataFrame 中按 Hospital_ 列调换了 Doctor 的排名:
并尝试将其乘以医院排名的 DataFrame by Doctor_ 列。这里第一个 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 中的列顺序、列名称和索引的长度必须相同。
获取二维数组,通过构造函数和join
创建DataFrame转为原文:
df = df.join(pd.DataFrame(arr, index=df.index).add_prefix('Multiplied '))
关于python - 尝试将特定列乘以 Pandas DataFrame (Python) 中多行的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54403482/