我有两个Pandas Dataframe :
print(df_a)
ID irrelevant_value
0 1 1.2
1 1 2.3
2 1 0.9
3 1 1.1
4 2 2.7
5 2 3.1
6 3 1.3
7 3 0.2
8 3 2.3
...
和
ID add_these_values_to_the_same_ID
0 1 100
1 2 120
2 3 90
...
我想把它们结合起来,这样-期望的结果:
print(df_a)
ID irrelevant_value add_these_values_to_the_same_ID
0 1 1.2 100
1 1 2.3 100
2 1 0.9 100
3 1 1.1 100
4 2 2.7 120
5 2 3.1 120
6 3 1.3 90
7 3 0.2 90
8 3 2.3 90
...
如何才能做到这一点?
我一直在与df_a.groupby([“ID”])作斗争,但找不到前进的方向。
2条答案
按热度按时间c0vxltue1#
这里不需要
groupby
函数;相反,只需使用merge
。正如这些文档中所述,如果两个键列都包含键为空值的行,则这些行将相互匹配。这与通常的SQL连接行为不同,可能会导致意外结果。
而且你的两个 Dataframe 都包含
ID
。因此,你可以用下面的代码合并 Dataframe (这只是一种方法,但它确实有效):真正重要的一行是:
这将输出:
这应该可以工作,但如果您的数据不适用于此方法,您可以查看
how
:how{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}
,默认inner
要执行的合并类型。left
:只使用左帧的键,类似于SQL左外连接;保持密钥顺序。right
:只使用右帧中的键,类似于SQL右外连接;保持密钥顺序。outer
:使用来自两个帧的键的联合,类似于SQL全外连接;按字典顺序对键排序。inner
:使用两个帧的键的交集,类似于SQL内部连接;保持左键的顺序。cross
:从两个帧创建笛卡尔积,保留左键的顺序。outer
可以工作,如果上面的代码不工作。g0czyy6m2#
尝试:
dataframe.merge