我正在合并两个收件箱.第一个 pyramid 看起来是这样的:

A       B        C           D
party1  asset1   product1    Buy
party1  asset1   product2    Sell
party2  asset2   product1    Buy
party2  asset2   product2    Sell

第二个相框看起来是这样的:

A       B        D
party1  asset1   Buy
party1  asset1   Sell
party2  asset2   Buy
party2  asset2   Sell

我像这样合并收件箱:

df2 = df.merge(df1, on=['A', 'B', 'D'])

返回:

A       B        D      C
party1  asset1   Buy    product1
party1  asset1   Sell   product2
party2  asset2   Buy    product1
party2  asset2   Sell   product2

我需要用列"C"中的值替换列"B"中的值,同时保留相同的名称"B".

A       B          D      
party1  product1   Buy    
party1  product2   Sell   
party2  product1   Buy    
party2  product2   Sell   

关于如何实现这一目标的任何建议都会有所帮助.

推荐答案

只需pop C即可取代B:

df2 = df.merge(df1, on=['A', 'B', 'D'])
df2['B'] = df1.pop('C')

作为连锁运营:

df2 = (df.merge(df1, on=['A', 'B', 'D'])
         .assign(B=lambda x: x.pop('C'))
      )

输出:

        A         B     D      
0  party1  product1   Buy    
1  party1  product2  Sell   
2  party2  product1   Buy    
3  party2  product2  Sell

Python相关问答推荐

配置Sweetviz以分析对象类型列,而无需转换

将numpy数组存储在原始二进制文件中

Polars LazyFrame在收集后未返回指定的模式顺序

在Google Colab中设置Llama-2出现问题-加载判断点碎片时Cell-run失败

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如何在solve()之后获得症状上的等式的值

如何设置视频语言时上传到YouTube与Python API客户端

* 动态地 * 修饰Python中的递归函数

如何在PySide/Qt QColumbnView中删除列

为什么if2/if3会提供两种不同的输出?

在输入行运行时停止代码

交替字符串位置的正则表达式

使用Openpyxl从Excel中的折线图更改图表样式

从旋转的DF查询非NaN值

比Pandas 更好的 Select

语法错误:文档. evaluate:表达式不是合法表达式

Django在一个不是ForeignKey的字段上加入'

如何在Python中从html页面中提取html链接?

如何将一个文件的多列导入到Python中的同一数组中?

在聚合中使用python-polars时如何计算模式