匹配查找结果出错-只能比较标记相同的Series对象

我有以下内容:

df1['Combined'] = ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', C', 'C']
df1['Quantity'] = [0, 60, 75, 149, 205, 500, 250, 300, 500, 40, 45, 75, 80]

df2['Combined'] = ['A', 'A', 'A', 'A', 'B', 'B','B','B', 'C', 'C', 'C']
df2['Min Q'] = [0, 50, 100, 150, 100, 0, 300, 400, 5, 50, 100] 
df2['Max Q'] = [49, 99, 149, 199, 199, 299, 399, 499, 60, 100, 149]

我想向df1添加一列,该列返回df2的范围。我尝试如下:

要计算df2 ['Range']:

df2['Range'] = df2['Min Q'].astype(float).astype(str) + ' - ' + df2['Max Q'].astype(float).astype(str)

查找df1 ['Range']:

def lookup_Range(Range):
    match = (df2['Min Q'].astype(float) <= df1['Quantity'].astype(float)) & (df2['Max Q'].astype(float) >= df1['Quantity'].astype(float)) & (df1['Combined'] == df2['Combined'])
    Range = df2['Range'][match]
    return Range.values[0]

df1['Quantity'].apply(lookup_Range)

但是我收到以下错误:

Can only compare identically-labeled Series objects. 

我不确定自己在做什么错。列重复一遍,但我认为我会在每个实例中获得唯一的匹配。感谢你的帮助。

耶斯列尔

使用merge首先通过过滤boolean indexingbetween

df2['Range'] = df2['Min Q'].astype(str) + ' - ' + df2['Max Q'].astype(str)

df = df1.merge(df2, on='Combined')
df = df[df['Quantity'].between(df['Min Q'], df['Max Q'])]
print (df)
   Combined  Quantity  Min Q  Max Q      Range
0         A         0      0     49     0 - 49
5         A        60     50     99    50 - 99
9         A        75     50     99    50 - 99
14        A       149    100    149  100 - 149
25        B       250      0    299    0 - 299
30        B       300    300    399  300 - 399
36        C        40      5     60     5 - 60
39        C        45      5     60     5 - 60
43        C        75     50    100   50 - 100
46        C        80     50    100   50 - 100

如果还希望仅过滤某些列:

df = df.loc[df['Quantity'].between(df['Min Q'], df['Max Q']), ['Combined','Quantity','Range']]
print (df)
   Combined  Quantity      Range
0         A         0     0 - 49
5         A        60    50 - 99
9         A        75    50 - 99
14        A       149  100 - 149
25        B       250    0 - 299
30        B       300  300 - 399
36        C        40     5 - 60
39        C        45     5 - 60
43        C        75   50 - 100
46        C        80   50 - 100

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

只能比较标记相同的 Series 对象

PythonValueError:只能比较标记相同的Series对象

ValueError:只能比较标记相同的Series对象

只能比较标记相同的Series对象Pandas Python

ValueError:只能比较标记相同的Series对象:python

熊猫:ValueError:只能比较标记相同的Series对象

Python Pandas-错误:只能比较标记相同的Series对象

错误:只能比较标记相同的DataFrame对象

熊猫只能比较标记相同的DataFrame对象

熊猫数据框矢量化/过滤:ValueError:只能比较标记相同的Series对象

Data_Frame错误-ValueError:只能比较标记相同的Series对象

错误“只能比较标记相同的Series对象”和sort_index

为什么我的布尔条件会生成“ ValueError:只能比较标记相同的Series对象”?

熊猫“只能比较标记相同的DataFrame对象”错误

Python Pandas只能比较标记相同的系列对象

ValueError:只能比较标记相同的系列对象-python-pandas

Pandas - “ValueError:只能比较标记相同的系列对象”

Pandas ValueError:只能比较标记相同的系列对象

在比较对象的相同结果集中进行比较

查找并标记匹配的括号对

尝试将数据框中的列与单个数据点进行比较时,“只能比较标记相同的系列对象”错误

PowerShell - 比较基于 2 个对象并查找不匹配项

比较具有相同标签的 Series 对象

在Java中查找匹配的对象

比较2个相同的十进制数但得出错误的结果

匹配函数给出错误的结果

根据动态比较查找匹配实体

MongoDB查找与坐标比较匹配的文档

查找比较表列的最佳匹配项