检查一列中的值是否在Python中另一列的间隔值中 [英] Check if values in one column is in interval values of another column in Python

查看:204
本文介绍了检查一列中的值是否在Python中另一列的间隔值中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据框:

import pandas as pd
import numpy as np
data = {
    "index": [1, 2, 3, 4, 5],
    "v1": [1100, 1776, 1228, 1640, np.NaN],
    "v2": [1000, 1805, 1231, 1425, 1800],
    "result": ['Y', 'Y', 'Y', 'N', 'N']
}
df = pd.DataFrame.from_dict(data)
print(df)

我想检查第v1列是否在第v2列的间隔内±100(或[v2 * 0.95,v2 * 1.05]).我如何在Python中做到这一点?谢谢你的帮助.这是我的最终结果示例:

I would like to check if column v1 is in interval of column v2 ± 100 (or [v2*0.95, v2*1.05]). How can i do it in Python? thanks for your help. Here is my final result example:

    index    v1      v2    result
0      1  1100.0    1000      Y
1      2  1776.0    1805      Y
2      3  1228.0    1231      Y
3      4  1640.0    1425      N
4      5     NaN    1800      N

推荐答案

对于v1 in [v2*0.95, v2*1.05]使用:

df['res'] = ''
for idx, val in enumerate(df.itertuples()):
    if df.loc[idx,'v1'] > df.loc[idx,'v2'] * 0.95 and df.loc[idx,'v1'] < df.loc[idx,'v2'] * 1.05:
        df.loc[idx, 'res'] = 'Yes'
    else:
        df.loc[idx, 'res'] = 'No'


+---+-------+--------+--------+------+-----+
|   | index | result |   v1   |  v2  | res |
+---+-------+--------+--------+------+-----+
| 0 |     1 | Y      | 1100.0 | 1000 | No  |
| 1 |     2 | Y      | 1776.0 | 1805 | Yes |
| 2 |     3 | Y      | 1228.0 | 1231 | Yes |
| 3 |     4 | N      | 1640.0 | 1425 | No  |
| 4 |     5 | N      | NaN    | 1800 | No  |
+---+-------+--------+--------+------+-----+

这篇关于检查一列中的值是否在Python中另一列的间隔值中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆