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

使用python执行内部联接,并对原始列重新排序

程墨竹
2023-03-14

我有两个数据集,df1和df2,其中:

我想对date和name列执行“内部联接”,但是,我也希望对一些列重新排序。

df1

name    freeG   totalG  sku      date
a       4       10      hi       10/10/2020
b       10      20      hi       10/10/2020
c       8       10      hello    10/10/2020
d       1       5       hello    10/10/2020
e       1       5       hey      10/10/2020
f       2       5       hey      10/10/2020
g       1       5       hey      10/10/2020

df2

total   freeS   usedS   name   date  
10      5       5       a      10/10/2020
20      10      10      b      10/10/2020
30      5       25      c      10/10/2020
40      10      30      d      10/10/2020
50      10      40      e      10/10/2020
10      5       5       f      10/10/2020
10      5       5       g      10/10/2020

预期结果

date           name freeG   totalG  sku     usedS   freeS   total  
10/10/2020      a   4       10      hi      5       5       10
10/10/2020      b   10      20      hi      10      10      20
10/10/2020      c   8       10      hello   25      5       30
10/10/2020      d   1       5       hello   30      10      40
10/10/2020      e   1       5       hey     40      10      50
10/10/2020      f   2       5       hey     5       5       10
10/10/2020      g   1       5       hey     5       5       10

这就是我正在做的

import pandas as pd
import numpy as np


new = pd.concat([df1, df2], axis=1, join='inner', inner_on=['date','name'])

//更改列的顺序

new1 = new[['date', 'name', 'freeG', 'totalG', 'sku', 'usedS', 'freeS', 'total']]

但是,我无法使用上述语法加入。如有任何建议,我们将不胜感激

共有1个答案

唐永春
2023-03-14
new = pd.merge(df1, df2, how='inner',on=['name', 'date'])#merge
new['total']=new.freeS.add(new.usedS)#compute  total

new1 = new[['date', 'name', 'freeG', 'totalG', 'sku', 'usedS', 'freeS', 'total']]   # align columns
new1
 类似资料:
  • 编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 所以我在这里,开始了我的编码之旅,在学习后开始研究合并排序,但遇到了一个问题。看,我已经实现了合并排序算法。当我尝试从方法打印列表时,它会打印一个排序的列表。但是一旦我尝试打印传递给实际需要排序的方法的原始列表。没有。它仍然是未排序的。 所以,我希望有人能帮我。我不能把代码,因为它是我的大学项目。

  • 我想使用Hibernate条件语言编写此查询。我对Hibernate很陌生,无法将此查询转换为条件形式。我参考了很多关于 SO 的答案,但就我而言,我在不同的列上使用内部连接而不是主键/外键列。我提到了这个,但仍然不能正确。

  • 问题内容: 我试图在一个列上内部联接两个表。从数据库方面来看,没有映射,因为这是我不想讨论的。 我想使用INNER JOIN执行HQL查询并检索ROLE对象/结果。 到目前为止,这是我的总部 session.createQuery(“ ROLE作为角色,INNER JOIN INVOLVEMENT作为参与角色,id。X =参与.roleid WHERE参与.id = X”)。list(); 我看到

  • 我找不到解决方法,所以我在这里发帖寻求帮助。我在并行运行测试时遇到问题(使用POM和page factory)。 *\Testbase类*/ *POM类* *测试用例* *XML文件* 我收到java nullpointerexception错误 **更新我碰到的错误,/*POM类*\createnewpage方法驱动程序返回一个空参数。 无论如何,我在这里尝试的是运行两个chrome浏览器进行并

  • 问题内容: 有人可以验证内部连接对PL SQL中的UPDATE语句是否有效吗?例如 问题答案: 该synthax在Oracle SQL中不起作用。 在Oracle中,如果表是“键保留”的,则可以更新联接,即: 假设这是的主键,则此连接是可更新的,因为对于A的每一行,B 最多 只有一行,因此该更新是确定性的。 在您的情况下,由于更新后的值不依赖于另一个表,因此您可以使用具有EXIST条件的简单更新,

  • 问题内容: 我有这个查询: 在访问时执行此查询时,出现“语法错误”。你有看错吗? 谢谢 问题答案: 您可以使用a来对更新查询中的其他表求和。具有聚合的子查询将无法工作,因为它们不可更新。