如何在 python/pandas 中的两个数据帧之间执行涂抹?

问题描述 投票:0回答:1

我有两个数据帧,我需要执行涂抹(如果这就是通常所说的)。基本上第一个较小(500 万行),另一个是 4000 万行。我想将数据帧 1 的第一个值添加到数据集 2 的前 8 个值,将数据帧 1 的第二个值添加到数据帧 2 中的第二组 8 个值,依此类推。 例如:

数据集1:

类别 价值
1 3
2 5
3 7

数据集2:

类别 价值
1 6
1 3
1 7
2 2
2 8
2 1
3 4
3 0
3 9

我希望它看起来像

结果:

类别 价值
1 9
1 6
1 10
2 7
2 13
2 6
3 11
3 7
3 16

抱歉,如果我的格式不太好,我不太习惯这样,无法提出与我类似的问题。

我尝试过使用 apply_smearing,但不确定这是否是我应该做的,并且它只会导致错误。我稍后会用我尝试过的实际代码回来更新这篇文章。

python pandas dataframe merge
1个回答
0
投票

如果您想根据数据帧大小添加值,无论第

'Category'
列中的值如何,您都可以使用
numpy.repeat

df2["Value"] += np.repeat(df1["Value"].values, len(df2) // len(df1))

如果您想根据

'Category'
中的值进行添加,您可以创建
dict
map
df1
df2
的值:

m = df1.set_index("Category")["Value"].to_dict()
df2["Value"] += df2["Category"].map(m)

两者都会输出:

   Category  Value
0         1      9
1         1      6
2         1     10
3         2      7
4         2     13
5         2      6
6         3     11
7         3      7
8         3     16
© www.soinside.com 2019 - 2024. All rights reserved.