根据Pandas中的行值比较数据框

时间:2018-11-20 14:23:14

标签: python python-3.x pandas dataframe data-analysis

在数据之间没有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

谢谢!

3 个答案:

答案 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