在数据之间没有1:1基数的情况下,使用Pandas比较两个数据集(.csv文件)的最佳方法是什么?
例如:这是数据集中的一个示例-
#### Row Item Color Price
01 Shirt Red $30
02 Hat Blue $10
还有第二个数据框的样本-
#### Row Item Color Price
01 Trouser Black $20
02 Bag Yellow $ 30
03 Hat Blue $10
04 Shirt Red $30
因此,如果我想比较两个数据集中有衬衫行的所有行。
什么是最好的方法?
我正在使用Pandas / Python3.7
谢谢!
答案 0 :(得分:1)
检查此示例:
DF1 = pd.DataFrame(data={'c1':['abc','abc','iop','iop'],'c2':['xyz','mno','yut','trg'],'c3':[0,0,0,0]})
c1 c2 c3
0 abc xyz 0
1 abc mno 0
2 iop yut 0
3 iop trg 0
DF2 = pd.DataFrame(data={'c1':['iop','abc','bhj','iop','xdf'],'c2':['yut','mno','uio','yut','edc']})
c1 c2
0 iop yut
1 abc mno
2 bhj uio
3 iop yut
4 xdf edc
match = pd.merge(DF1,DF2,on=['c1','c2'],how='inner')
print(match)
c1 c2 c3
0 abc mno 0
1 iop yut 0
2 iop yut 0
因此,通过使用pd.merge
,您可以获得匹配的行
答案 1 :(得分:1)
您可以像这样简单地使用熊猫import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Example")
property int curIndexWitouthZero: 0
SwipeView {
id: viewSwipe
width: parent.width
height: parent.height * 0.70
currentIndex: 0
Component.onCompleted: {
curIndexWitouthZero = viewSwipe.currentIndex
curIndexWitouthZero += 1
addPage(createPage())
}
onCurrentIndexChanged: {
curIndexWitouthZero = viewSwipe.currentIndex
curIndexWitouthZero += 1
}
function addPage(page) {
console.log("funzione addPage()")
addItem(page)
page.visible = true
}
function createPage(){
var component = Qt.createComponent("RecipesPhase.qml");
var page = component.createObject(viewSwipe,
{"color": Qt.rgba(Math.random(), Math.random(), Math.random(), Math.random())}
);
return page
}
}
PageIndicator {
id: indicator
interactive: true
count: viewSwipe.count
currentIndex: viewSwipe.currentIndex
onCurrentIndexChanged: viewSwipe.currentIndex = currentIndex
anchors.top: viewSwipe.bottom
anchors.topMargin: parent.height * 0.05
anchors.horizontalCenter: parent.horizontalCenter
}
MouseArea{
anchors.top: indicator.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
onClicked: viewSwipe.addPage(viewSwipe.createPage())
}
}
:
merge
仅当两个数据帧中的所有列都匹配Item ='Shirt'并且对应的列也相等时,才会产生输出。
让我知道这是否是您想要的。
答案 2 :(得分:1)
在Byte
-1
127
Short
-1
32767
Integer
2147483647
2147483647
Long
9223372036854775807
9223372036854775807
Float
Infinity
3.4028235E38
Double
Infinity
1.7976931348623157E308
之后过滤
merge