今天记录一下pandas筛选出一个表中满足另一个表中所有条件的数据。例如:
list1 结构:名字,id,颜色,数量,类型。
list1 = [['a',1,255,100,'03'],['a',2,481,50,'06'],['a',47,255,500,'03'],['b',3,1,50,'11']]
list2结构:名字,类型,颜色。
list2 = [['a','03',255],['a','06',481]]
如何在list1中找出所有与list2中匹配的元素?要得到下面的结果:list = [['a',1,255,100,'03'],['a',2,481,50,'06'],['a',47,255,500,'03']]。
首先将两个list转化为dataframe.
1
2
3
4
|
list1 = [[ 'a' , 1 , 255 , 100 , '03' ],[ 'a' , 2 , 481 , 50 , '06' ],[ 'a' , 47 , 255 , 500 , '03' ],[ 'b' , 3 , 1 , 50 , '11' ]]
df1 = pd.dataframe(list1,columns = [ "名字" , "id" , "颜色" , "数量" , "类型" ])
list2 = [[ 'a' , '03' , 255 ],[ 'a' , '06' , 481 ]]
df2 = pd.dataframe(list2,columns = [ "名字" , "类型" , "颜色" ])
|
数据结构如下:
然后利用pandas.merge函数将其进行内连接。
这个函数的语法是:
pd.merge(left, right, how='inner', on=none, left_on=none, right_on=none, left_index=false, right_index=false, sort=false, suffixes=('_x', '_y'), copy=true, indicator=false, validate=none)。这函数连接方式和sql的连接类似,由参数how来控制。
最后的代码如下:
1
2
3
4
5
6
7
8
|
import pandas as pd
list1 = [[ 'a' , 1 , 255 , 100 , '03' ],[ 'a' , 2 , 481 , 50 , '06' ],[ 'a' , 47 , 255 , 500 , '03' ],[ 'b' , 3 , 1 , 50 , '11' ]]
df1 = pd.dataframe(list1,columns = [ "名字" , "id" , "颜色" , "数量" , "类型" ])
list2 = [[ 'a' , '03' , 255 ],[ 'a' , '06' , 481 ]]
df2 = pd.dataframe(list2,columns = [ "名字" , "类型" , "颜色" ])
df = pd.merge(df1,df2,how = 'inner' ,on = [ "名字" , "类型" , "颜色" ],right_index = true)
df.sort_index(inplace = true)
print (df)
|
返回结果按照左表的顺序输出:
以上这篇浅谈pandas筛选出表中满足另一个表所有条件的数据方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_24499417/article/details/84129598