Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将list元素与dataframe元素python匹配_Python_Regex_Pandas_List_Dataframe - Fatal编程技术网

将list元素与dataframe元素python匹配

将list元素与dataframe元素python匹配,python,regex,pandas,list,dataframe,Python,Regex,Pandas,List,Dataframe,我有一些清单如下: l1 = ['Category=worker,manager','Name=Ana,Tom', 'Task=Cleaning,Plumbing'] 然后是数据帧df: Name | Category | Task | OrderNum Bryan | worker,manager | Cleaning,Plumbing | 2 Ana,Tom | worker,manager | Cleaning,Plumbing | 3 我想找

我有一些清单如下:

l1 = ['Category=worker,manager','Name=Ana,Tom', 'Task=Cleaning,Plumbing']
然后是数据帧df:

Name    | Category        | Task       | OrderNum

Bryan   | worker,manager  | Cleaning,Plumbing | 2
Ana,Tom | worker,manager  | Cleaning,Plumbing | 3
我想找到一个列表项,在相应的df列中找到匹配的值,&当找到列表的所有匹配项时,然后从
OrderNum
列返回其值

我怎样才能得到它呢?

给定:

>>> l1 = ['Category=worker,manager','Name=Ana,Tom', 'Task=Cleaning,Plumbing']
>>> 
>>> df
      Name        Category               Task  OrderNum
0    Bryan  worker,manager  Cleaning,Plumbing         2
1  Ana,Tom  worker,manager  Cleaning,Plumbing         3
您可以从
l1
形成如下查询:

>>> query = ' and '.join("{} == '{}'".format(*s.split('=')) for s in l1)
>>> query
"Category == 'worker,manager' and Name == 'Ana,Tom' and Task == 'Cleaning,Plumbing'"
。。。然后发布

>>> df.query(query)
      Name        Category               Task  OrderNum
1  Ana,Tom  worker,manager  Cleaning,Plumbing         3

如果你只期望一次命中,或者

>>> result = df.query(query)['OrderNum'].iat[0]
>>> result
3

如果您希望至少有一次命中,并且希望将
结果
分配给第一次命中,无论有多少次。

此列表是不可能的。请发布不抛出语法错误的数据结构。@timgeb更正了列表器
result,*.\udf.query(query)['OrderNum']
,如果超过1个。@coldspeed在这种情况下可能
iat[0]
更好,因为不需要解包一个潜在的大序列。@timgeb它给我的结果是空数据帧。但是df肯定不是空的。@user10096621那么您的数据帧看起来不像您说的那样。正如你所看到的,我复制粘贴了一个解释器会话。(我想这就是你没有发布一条消息的原因:)@user10096621如果没有一条消息,我就帮不了你。
>>> result, = df.query(query)['OrderNum']
>>> result
3
>>> result = df.query(query)['OrderNum'].iat[0]
>>> result
3