如何增加数据帧并保留行键

2024-09-28 21:18:32 发布

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

我正在努力将数据帧相乘并保留行键。你知道吗

我有两个文件,叫做F1和F2。F1有一个由多部分组成的组键(g1、g2、g3)、一个由两部分组成的类型键(k1、k2)和一些权重(r1、r2)。F2为每个类型键提供一系列值。你知道吗

我想把它们加在k1和k2上,把r1和r2乘以n

我认为groupby和dataframe multiply应该可以工作,但是我不知道怎么做。我唯一要做的就是合并,然后逐列相乘,但是速度非常慢。你知道吗

F1
g1  g2  g3  k1  k2  r1  r2
A   A   A   A   A   1   2
A   A   A   A   B   3   4
A   A   B   A   B   2   3

F2
k1  k2  n   r1  r2
A   A   1   0   1
A   A   2   1   1
A   A   3   1   0
A   B   1   3   4
A   B   2   4   4
A   B   3   4   3
A   C   1   1   1
A   C   3   4   5
A   C   2   3   4

Result
g1  g2  g3  k1  k2  n   r1  r2
A   A   A   A   A   1   0   2
A   A   A   A   A   2   1   2
A   A   A   A   A   3   1   0
A   A   A   A   B   1   9   16
A   A   A   A   B   2   12  16
A   A   A   A   B   3   12  12
A   A   B   A   B   1   6   12
A   A   B   A   B   2   8   12
A   A   B   A   B   3   8   9

谢谢


Tags: 文件数据类型k2k1f2f1权重
1条回答
网友
1楼 · 发布于 2024-09-28 21:18:32
mrg = F1.merge(F2, on=['k1', 'k2'])

mrg['r1'] = mrg.filter(like='r1').prod(1)
mrg['r2'] = mrg.filter(like='r2').prod(1)
drops = ['r1_x', 'r1_y', 'r2_x', 'r2_y']
mrg.drop(drops, axis=1)

enter image description here

相关问题 更多 >