尝试将特定列乘以Pandas DataFrame(Python)中多行的一部分

2024-04-25 17:58:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试用多行的一部分乘以几个特定的列,并从每个结果创建一个新列。我在之前的stackoverflow问题或在google上都找不到我的问题的答案,所以也许你们中的一个可以帮上忙。在

我想指出的是,我是Python的初学者,因此对于任何明显的问题或奇怪的代码,请提前致歉。在

以下是我的数据帧当前的外观: enter image description here

因此,对于按医生_1排列的医院的列秩,我要用它的所有数字乘以医生按医院1排列的第一行的值,直到医生的列秩由医院10的值。这将导致:

1*1
2*1
3*1
4*4
...

等等。 我想为每一个医生专栏做这个。因此,对于医生2,它的值应该乘以所有十列中的第二行(按医院排名的医生)。医生逯3乘以第三行等

到目前为止,我已经在一个新的数据帧中转换了按医院排列的医生级别: enter image description here

并试图用医生列的医院等级的数据帧乘以这个值。这里第一个df的第一列应该乘以第二个df的第一列。(第二栏*第二栏等): enter image description here

但我现在的公式

^{pr2}$

显然不起作用: enter image description here

有人知道我做错了什么,我该怎么解决这个问题吗?也许我可以写一个for循环,这样每次列的乘法都会创建一个新列?因此,DF3的乘法_列_1=DF1的第1列*DF2的第1列;DF3的乘法_2列=DF1的第2列*DF2的第2列。在

提前谢谢你!在

杰夫


Tags: 数据答案代码dfgoogle数字stackoverflow外观
2条回答
df = pd.DataFrame({"A":[1,2,3,4,5], "B":[6,7,8,9,10]})
df["mul"] = df["A"] * df["B"]

print(df)

输出:

^{pr2}$

如果我正确地理解了这个问题,我想你太复杂了。 您可以创建另一列,告诉pandas将第一列的值乘以第二列的值。在

更类似于您的特定案例,有两列以上:

df = pd.DataFrame({"A":[1,2,3,4,5], "B":[6,7,8,9,10], "C":[11,12,13,14,15]})
df["mul"] = df["A"] * df["B"] * df["C"]


您可以先用^{}^{}筛选列来创建多个二维数组:

arr = df.filter(like='Rank of Hospital by').values * df.filter(like='Rank of Doctor by').values

或者:

^{pr2}$

注意必须是两个过滤数据帧中的列顺序相同、列名和索引的长度相同。在

获取2d数组,因此通过构造函数创建DataFrame并将^{}转换为原始:

df = df.join(pd.DataFrame(arr, index=df.index).add_prefix('Multiplied '))

相关问题 更多 >