python - 将多个 if 语句放入 python pandas 的一个 if 语句中

标签 python pandas dataframe if-statement spreadsheet

我需要将这个大的 if 语句从 python 转换为 python pandas。我遇到问题,因为该语句内部有多个 if 语句。

所有值(x_value、i_value、u_value、y_val、tb、uvd)都是 xlsx 工作表中的列。我需要使用打印功能中的代码创建一个新列。声明比此处显示的要长

import math

if x_value <= 1.00 and x_value >= 0:
    if y_val <= 0.25 and y_val >= 0:
        if tb < 0 and i_value == 0:
            print('aa1')
        elif tb < 0 and uvd > 0:
            print('aa2')
        elif tb < 0 and uvd < 0:
            print('aa3')
        elif tb > 0 and uvd < 0:
            print('aa4')
        elif tb > 0 and uvd > 0:
            print('aa5')
        elif tb > 0 and u_value > 0:
            print('aa6')
        else:
            print('error')
    elif y_val <= 0.50 and y_val >= 0.25:
        if tb < 0 and i_value == 0:
            print('ab1')
        elif tb < 0 and uvd > 0:
            print('ab2')
        elif tb < 0 and uvd < 0:
            print('ab3')
        elif tb > 0 and uvd < 0:
            print('ab4')
        elif tb > 0 and uvd > 0:
            print('ab5')
        elif tb > 0 and u_value > 0:
            print('ab6')
        else:
            print('error')
    elif y_val <= 0.75 and y_val >= 0.50:
        if tb < 0 and i_value == 0:
            print('ac1')
        elif tb < 0 and uvd > 0:
            print('ac2')
        elif tb < 0 and uvd < 0:
            print('ac3')
        elif tb > 0 and uvd < 0:
            print('ac4')
        elif tb > 0 and uvd > 0:
            print('ac5')
        elif tb > 0 and u_value > 0:
            print('ac6')
        else:
            print('error')
    elif y_val <= 1.00 and y_val >= 0.75:
        if tb < 0 and i_value == 0:
            print('ad1')
        elif tb < 0 and uvd > 0:
            print('ad2')
        elif tb < 0 and uvd < 0:
            print('ad3')
        elif tb > 0 and uvd < 0:
            print('ad4')
        elif tb > 0 and uvd > 0:
            print('ad5')
        elif tb > 0 and u_value > 0:
            print('ad6')
        else:
            print('error')
    else:
        print('Error!')

elif x_value <= 3.00 and x_value >= 1:
    if y_val <= 0.25 and y_val >= 0:
        if tb < 0 and i_value == 0:
            print('ba1')
        elif tb < 0 and uvd > 0:
            print('ba2')
        elif tb < 0 and uvd < 0:
            print('ba3')
        elif tb > 0 and uvd < 0:
            print('ba4')
        elif tb > 0 and uvd > 0:
            print('ba5')
        elif tb > 0 and u_value > 0:
            print('ba6')
        else:
            print('error')
    elif y_val <= 0.50 and y_val >= 0.25:
        if tb < 0 and i_value == 0:
            print('bb1')
        elif tb < 0 and uvd > 0:
            print('bb2')
        elif tb < 0 and uvd < 0:
            print('bb3')
        elif tb > 0 and uvd < 0:
            print('bb4')
        elif tb > 0 and uvd > 0:
            print('bb5')
        elif tb > 0 and u_value > 0:
            print('bb6')
        else:
            print('error')
    elif y_val <= 0.75 and y_val >= 0.50:
        if tb < 0 and i_value == 0:
            print('bc1')
        elif tb < 0 and uvd > 0:
            print('bc2')
        elif tb < 0 and uvd < 0:
            print('bc3')
        elif tb > 0 and uvd < 0:
            print('bc4')
        elif tb > 0 and uvd > 0:
            print('bc5')
        elif tb > 0 and u_value > 0:
            print('bc6')
        else:
            print('error')
    elif y_val <= 1.00 and y_val >= 0.75:
        if tb < 0 and i_value == 0:
            print('bd1')
        elif tb < 0 and uvd > 0:
            print('bd2')
        elif tb < 0 and uvd < 0:
            print('bd3')
        elif tb > 0 and uvd < 0:
            print('bd4')
        elif tb > 0 and uvd > 0:
            print('bd5')
        elif tb > 0 and u_value > 0:
            print('bd6')
        else:
            print('error')
    else:
        print('Error!')
else:
    print('ERROR')

有什么建议吗?

最佳答案

  1. 我想你可能想在 pandas 中获得一些功能。
    1. 生成玩具数据集
import numpy as np
import pandas as pd


data = pd.DataFrame(np.random.random(size=(10, 6)))
data.columns = ['x_value', 'i_value', 'u_value', 'y_val', 'tb', 'uvd']
data

enter image description here

  • 生成一个小函数
def cal_value(x):
    if x['x_value'] < 0.5 and x['y_val'] > 0.5:
        return 'type1'
    elif x['i_value'] < 0.5 and x['tb'] > 0.5:
        return 'type2'
    else:
        return 'type3'
  • 在 DataFrame 中使用 apply 函数
data['type'] = data.apply(lambda x: cal_value(x), axis=1)
data

enter image description here

如果想获得有关apply的更多详细信息,请点击pandas文档链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html

关于python - 将多个 if 语句放入 python pandas 的一个 if 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68628653/

相关文章:

python - 在 SQLAlchemy 中插入两个相关对象失败

python - python manager.dict() 锁定是如何工作的 :

python - pandas:跨多列搜索部分字符串并输出每行的值

python - 将 Pandas 数据框转换为字典会用空格重命名列标题

python - python 列表推导式总是一种好的编程习惯吗?

python - python内置列表的__init__方法下面的初始化过程是什么

python - 检查 python Pandas 数据结构中的重复项

python - 如何将字典附加到 Pandas 数据框?

python - 向数据框中添加从同一数据框中提取的变量的新记录

python - 来自多个数据框列的分类数据的散点图