Pandas 在匹配过程后消除行并保留最少的数据

Pandas 在匹配过程后消除行并保留最少的数据,pandas,csv,dataframe,Pandas,Csv,Dataframe,我分析了两个品牌数据之间的匹配过程。分析后,数据帧如下所示: df Brand A Type A Brand B Type B Data 1 Data 2 Match IDA Type A ID1 Type 1 3.2 403.4 Match-1 IDA Type B ID1 Type 2 4.1 403.4 Match-2 IDA Type A ID1 Type 1 1.1 56.5 Ma

我分析了两个品牌数据之间的匹配过程。分析后,数据帧如下所示:

df
Brand A Type A  Brand B Type B  Data 1  Data 2  Match
IDA     Type A  ID1     Type 1  3.2     403.4   Match-1
IDA     Type B  ID1     Type 2  4.1     403.4   Match-2
IDA     Type A  ID1     Type 1  1.1     56.5    Match-1
IDA     Type B  ID1     Type 2  1.4     56.5    Match-2
IDA     Type B  ID1     Type 2  0.6     220.4   Match-2
IDB     Type A  ID2     Type 1  1.0     292.3   Match-1
IDB     Type B  ID2     Type 2  0.6     292.3   Match-2
IDB     Type A  ID2     Type 1  1.5     472.6   Match-1
Result
Brand A Type A  Brand B Type B  Data 1  Data 2  Match
IDA     Type A  ID1     Type 1  1.1     56.5    Match-1
IDA     Type B  ID1     Type 2  1.4     56.5    Match-2
IDB     Type A  ID2     Type 1  1.0     292.3   Match-1
IDB     Type B  ID2     Type 2  0.6     292.3   Match-2
我想消除品牌A和品牌b列,或者删除
dataframe
的行,但根据数据1和数据2列以及match-1和match-2(必须有两个数据仍然存在)保留
最小值。如果解释不清楚,请原谅

我的预期结果如下所示:

df
Brand A Type A  Brand B Type B  Data 1  Data 2  Match
IDA     Type A  ID1     Type 1  3.2     403.4   Match-1
IDA     Type B  ID1     Type 2  4.1     403.4   Match-2
IDA     Type A  ID1     Type 1  1.1     56.5    Match-1
IDA     Type B  ID1     Type 2  1.4     56.5    Match-2
IDA     Type B  ID1     Type 2  0.6     220.4   Match-2
IDB     Type A  ID2     Type 1  1.0     292.3   Match-1
IDB     Type B  ID2     Type 2  0.6     292.3   Match-2
IDB     Type A  ID2     Type 1  1.5     472.6   Match-1
Result
Brand A Type A  Brand B Type B  Data 1  Data 2  Match
IDA     Type A  ID1     Type 1  1.1     56.5    Match-1
IDA     Type B  ID1     Type 2  1.4     56.5    Match-2
IDB     Type A  ID2     Type 1  1.0     292.3   Match-1
IDB     Type B  ID2     Type 2  0.6     292.3   Match-2

谢谢

您可以使用
排序\u值
然后
删除重复项

yourdf = df.sort_values(['Data 2','Data 1']).drop_duplicates(['Brand A', 'Type A',  'Brand B', 'Type B'] )
输出

df.sort_values(['Data 2','Data 1']).drop_duplicates(['Brand A', 'Type A',  'Brand B', 'Type B'] ).sort_index()

  BrandA  TypeA BrandB  TypeB  Data1  Data2    Match
2    IDA  TypeA    ID1  Type1    1.1   56.5  Match-1
3    IDA  TypeB    ID1  Type2    1.4   56.5  Match-2
5    IDB  TypeA    ID2  Type1    1.0  292.3  Match-1
6    IDB  TypeB    ID2  Type2    0.6  292.3  Match-2

-谢谢你的回答。然而,另一行仍然出现(不仅是成对数据)@Arief基于您的样本数据,我得到了与预期输出匹配的结果,您能再次检查它吗?您的结果
last
可能是其平均值
max
。如何保持
最小值
?@Arief通过删除保持值进行修复last@Arief问题2型为什么不是0.6220.4