当前位置: 首页 > 知识库问答 >
问题:

熊猫自定义合并条件key1包含key2

惠翰藻
2023-03-14

我试图合并两个数据帧,条件是key1包含key2,下面是一个示例

df1

name         info
Bill Gates   Microsoft
Steve Jobs   Apple
Elon Musk    Tesla

df2

name        info
Bill        aaa
Kate        bbb
Steve       ccc

我在key'name'列上进行合并,我想要得到的结果是

df3

name          info         name     info
Bill Gates    Microsoft    Bill     aaa
Steve Jobs    Apple        Steve    ccc

在我的例子中,df1相对较小,大约有600条记录,但df2相当大,大约有200万条记录,所以效率也是一个问题,非常感谢。

共有1个答案

申屠洛华
2023-03-14

重命名内容并合并

rename_dict = {'name': 'full', 'info': 'company'}
df1.rename(columns=rename_dict).assign(
    name=lambda d: d.full.str.split().str[0]).merge(df2)

         full    company   name info
0  Bill Gates  Microsoft   Bill  aaa
1  Steve Jobs      Apple  Steve  ccc
 类似资料:
  • 我试图开发以下过滤器与熊猫数据帧: 我有四列,,,和 如何将其作为聚合函数编写? 下面是一个编写效率低下的工作示例: 输出:

  • 假设我有2个数据帧: DF1: Col1 | Col2 | Col3 XCN000370/17-18C|XCN0003711718C|0003971718 DF2 Col1 | Col2 | Col3 XCN0003711718C|XCN0003711718C|0003971718 我希望它们像这样合并: 首次匹配Col1(DF1)和Col1(DF2) 在保持不匹配的情况下,将Col1(DF1)与

  • 我有一个数据框架: 和一本参考词典: 我的目标是将所有出现的< code > replacement _ dict[' X1 ']替换为' X1 ',然后将这些行合并在一起。例如,“x1”、“x2”、“x3”或“x4”的任何实例都将被替换为“X1”等。 我可以通过选择包含任何这些字符串的行并将其替换为“X1”来实现这一点: 给予: 现在,如果我选择所有包含“X1”的行并将它们合并,我将得到: 因此

  • 问题内容: 如何在两个数据框中找出同名列之间的区别?我的意思是,我有一个名为X的数据框A和一个名为X的数据框B,如果这样做的话,我将获得A和B的通用X值,但是我如何获得“非通用”的X值? 问题答案: 如果将合并类型更改为,这将添加一列以告诉您这些值是否仅是左/左右/右: 然后,您可以在col上过滤结果合并的df : 您也可以使用和否定掩码以查找不在B中的值:

  • 我有一个数据帧 是否有某种自定义筛选方法,可以让Python知道 说我要过滤,