我有两个数据帧,我需要执行涂抹(如果这就是通常所说的)。基本上第一个较小(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,但不确定这是否是我应该做的,并且它只会导致错误。我稍后会用我尝试过的实际代码回来更新这篇文章。
如果您想根据数据帧大小添加值,无论第
'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