- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
晚上好
我想知道,比较两个数据框并返回它们的组合的最佳方法是什么?或者如果 pandas 中甚至有一个内置函数?
例如,这是我的两个数据框:
数据框 01:
first_name | age | id | value_a | value_b | value_c
peter | 37 | 19 | 4562 | 78 | 21.5
jane | 32 | 5 | 3832 | 85 | 17.0
michael | 43 | 41 | 2195 | 63 | 44.4
数据框 02:
first_name | age | id | value_a | value_b | value_c
sarah | 51 | 2 | 63 | 81 | 4.1
peter | 37 | 19 | 4562 | 81 | 21.5
tom | 22 | 89 | 107 | 14 | 0.0
michael | 43 | 41 | 1838 | 63 | 44.4
如您所见,整个数据框(Dataframe 02)中有一些新条目,并且还列出了一些已经存在的条目 --> 在这些行中进行了一些更改!我想要实现的是一个新的(?)数据框,其中包含所有新行、已经存在的行和已更新的行!在这种情况下:
新数据框
first_name | age | id | value_a | value_b | value_c
peter | 37 | 19 | 4562 | 81 | 21.5
jane | 32 | 5 | 3832 | 85 | 17.0
michael | 43 | 41 | 1838 | 63 | 44.4
sarah | 51 | 2 | 63 | 81 | 4.1
tom | 22 | 89 | 107 | 14 | 0.0
注意事项:
感谢您的帮助,祝您度过一个愉快的夜晚!
最佳答案
自从您问pandas 中是否有内置函数?。答案是肯定的,pandas 中有一个内置函数,可让您比较标记相同(具有相同索引和列)的数据框。
有一个 DataFrame.compare
函数在 pandas 版本 >= 1.1.0
中可用,它允许您将第一个数据帧与第二个数据帧进行比较并显示差异:
那么,现在让我们看看您所说的示例
- there is always a column (here: 'id') that can be seen as a non changing key
- the amount and names of the colums are always staying the same
因此,为了比较两个数据帧,您首先需要对两个数据帧进行 align
,这可以在将列 DataFrame.align
设置为两个数据帧中的通用 id
后使用 index
函数完成:
d1, d2 = df1.set_index('id').align(df2.set_index('id'))
现在您可以在对齐的数据帧上使用 DataFrame.compare
:
d1.compare(d2, keep_equal=True)
结果:
first_name age value_a value_b value_c
self other self other self other self other self other
id
2 NaN sarah NaN 51.0 NaN 63.0 NaN 81.0 NaN 4.1
5 jane NaN 32.0 NaN 3832.0 NaN 85.0 NaN 17.0 NaN
19 peter peter 37.0 37.0 4562.0 4562.0 78.0 81.0 21.5 21.5
41 michael michael 43.0 43.0 2195.0 1838.0 63.0 63.0 44.4 44.4
89 NaN tom NaN 22.0 NaN 107.0 NaN 14.0 NaN 0.0
现在来回答你的第二个问题:
How to achieve is a new(?) dataframe that contains all the new rows,the already existing ones and those who got updated!
您可以在对齐的数据帧 DataFrame.comine_first
和 d1
上使用 d2
:
d2.combine_first(d1)
或者,对于非对齐的如下:
df2.set_index('id').combine_first(df1.set_index('id'))
结果:
first_name age value_a value_b value_c
id
2 sarah 51.0 63.0 81.0 4.1
5 jane 32.0 3832.0 85.0 17.0
19 peter 37.0 4562.0 81.0 21.5
41 michael 43.0 1838.0 63.0 44.4
89 tom 22.0 107.0 14.0 0.0
关于 python , Pandas : Compare two dataframes and return combined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65655246/
询问 unrelated question我有这样的代码: public boolean equals(Object obj) { if (this == obj) retur
在我之前的一个问题中 js: Multiple return in Ternary Operator我询问了有关使用三元运算符返回多个参数的问题。但是现在参数IsActveUser boolean(t
假设我有一个带有 return 的 if 语句。从效率的角度来看,我应该使用 if(A > B): return A+1 return A-1 或 if(A > B): return
例如考虑以下代码: int main(int argc,char *argv[]) { int *p,*q; p = (int *)malloc(sizeof(int)*10); q
PyCharm 对这段代码发出警告,说最后一个返回是不可访问的: def foo(): with open(...): return 1 return 0 如果 ope
我想实现这样的目标: 如果在返回 Json 的方法中抛出异常,则返回 new Json(new { success = false, error = "unknown"}); 但如果方法返回 View
它是多余的,但我正在学习 JS,我想知道它是如何工作的。 直接从模块返回函数 let func1 = function () { let test = function () {
我不明白我应该使用什么。我有两页 - intro.jsp(1) 和 booksList.jsp(2)。我为每一页创建了一个 Controller 类。第一页有打开第二页的按钮:
我最近在 Joomla 组件(Kunena,更准确地说是 Kunena)中看到这段代码,那么使用 $this->return VS 简单的 return 语句有什么区别. 我已经用谷歌搜索了代码,但没
我的类实现了 IEnumerable。并且可以编译这两种方式来编写 GetEnumerator 方法: public IEnumerator GetEnumerator() { yield r
我只是在编码,我想到了一个简单的想法(显然是问题),如果我有一个像这样的函数: int fun1(int p){ return(p); } 我有一个这样的函数: int fun1(int p){
这个问题在这里已经有了答案: What does the comma operator do in JavaScript? (5 个答案) 关闭 9 年前。 function makeArray
假设我写了一个 for 循环,它将输出所有数字 1 到 x: x=4 for number in xrange(1,x+1): print number, #Output: 1 2 3 4 现
我最近在这个 Apache Axis tutorial example. 中看到了下面的一段代码 int main() { int status = AXIS2_SUCCESS; ax
function a(){ return{ bb:"a" } } and function a(){ return { bb:"a" } } 这两个代码有什么区别吗,如果有请
function a() { return 1; } function b() { return(1); } 我在 Chrome 的控制台中测试了上面的代码,都返回了 1。 function c()
考虑这三个函数: def my_func1(): print "Hello World" return None def my_func2(): print "Hello World"
这可能是一个愚蠢的问题,但我正在努力,如果有一种简明的方法来测试函数的返回结果,如果它不满足条件,则返回该值(即,传递它)。。现在来回答一个可能的问题,是的,我正在寻找的类似于例外提供的东西。然而,作
我正在测试一个函数,并尝试使用 return 来做什么,并在 PowerShell 5.1 和 PwSh 7.1 中偶然发现了一个奇怪的问题,即 return cmdlet似乎不适合在团体中工作: P
这个问题已经有答案了: Return in generator together with yield (2 个回答) Why can't I use yield with return? (5 个回
我是一名优秀的程序员,十分优秀!