【发布时间】:2021-12-27 08:36:21
【问题描述】:
我有一个关于复制和熊猫的问题。我有两个必须外连接的数据框,例如,给出了 df 1
| id | type | value1 |
|---|---|---|
| 1 | a | 100 |
| 1 | b | 200 |
其中 id==1 包含具有不同值的两种类型,我想将其与另一个 df 结合,
| id | value2 | value3 |
|---|---|---|
| 1 | 50 | 300 |
我正在将两者合并使用
df_merged = df1.merge(df2,how='outer',on='id')
结果是
| id | type | value1 | value2 | value3 |
|---|---|---|---|---|
| 1 | a | 100 | 50 | 300 |
| 1 | b | 200 | 50 | 300 |
很明显 value2 和 value3 重复,如果我例如想要对 value2 或 value3 求和。有什么方法可以合并和创建例如
| id | type | value1 | value2 | value3 |
|---|---|---|---|---|
| 1 | a | 100 | 50 | 300 |
| 1 | b | 200 | NaN | NaN |
或其他某种类型的方法?
谢谢!
【问题讨论】:
-
这就是连接的设计方式。在更大的范围内,您想要实现什么?为什么需要这个特定的连接?
-
如果 df1 中的 2 行严格相同,会发生什么?相同的 id、type 和 value1。
-
进行统计 - 这些值是敏感的税务数据。我不想重复计算税收元素。
-
什么你不想数两次?首先按某个列分组然后加入不是更有意义吗?
-
如果 df1 中的值相同,它应该保留两个值,因为类型不同。如果 df1 只有一种类型,则只有 1 列,因此没有问题。我只是不想在合并时复制“其他”值。
标签: python pandas dataframe merge outer-join