比较其他熊猫数据框的每一行中的值

时间:2020-09-29 10:26:46

标签: python pandas numpy

我有一个简单的pandas数据框,其中有一个range列。

map_dict =    { 'range' : [50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 40000, 80000, 120000], 
               'sample' : [1000, 1000, 1000, 1000, 2000, 2000, 2000, 2000, 2000, 2000, 2000, 2000] }

pd.DataFrame.from_dict(map_dict)

我有一个值,可以说x,现在我想比较列范围中每一行的x,例如如果x> 200&x <500,则将x与列样本中的匹配值相加。

另一个示例,如果x = 4000,因为在这种情况下,范围列中的x> 2000&x <5000。因此列样本中的匹配值将为2000,因此我将得出2000

output:6000

如何比较其他数据框中的值并在下一列中获取匹配的值?

1 个答案:

答案 0 :(得分:1)

我相信您需要减去值,像0那样进行更大的比较,并获得sample列的第一个匹配值:

x = 4000

y = next(iter(df.loc[df['range'].sub(x) > 0, 'sample']))
#alternative for first matched value
#y = df.loc[ y > 0, 'sample'].to_numpy()[0]
print (y)
2000

print (x + y)
6000