对数据帧应用If函数

2024-03-29 01:15:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对数据帧中的列应用IF函数。很简单,如果工资超过5万英镑,我希望它返回“5万英镑以上”,如果工资低于5万英镑,则返回“5万英镑以下”。你知道吗

我尝试了下面的代码,但遇到了错误消息。我做了一些关于在处理数据帧时使用apply函数的研究,因此定义了一个函数并使用了下面的第二段代码,但是得到了第二条错误消息。你知道吗

    salary = employees['Salary']

    if Salary > 50000:
        print('Over £50,000')
    else:
        print('Under £50,000')

应用方法

    def SalaryCheck():
        if Salary > 50000:
            print('Over £50,000')
        else:
            print('Under £50,000') 

    employees.Salary.apply(SalaryCheck)


    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "C:\Users\Peter\PycharmProjects\untitled\venv\lib\site-                        packages\pandas\core\generic.py", line 1556, in __nonzero__
        self.__class__.__name__
    ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

应用方法警告

    Traceback (most recent call last):
      File "<input>", line 1, in <module>
      File "C:\Users\Peter\PycharmProjects\untitled\venv\lib\site-        packages\pandas\core\series.py", line 4038, in apply
        mapped = lib.map_infer(values, f, convert=convert_dtype)

Tags: 数据函数代码in消息iflib错误
2条回答

您可以使用以下方法。请阅读关于apply()的说明。你知道吗

def SalaryCheck(Salary):
    if Salary > 50000:
        print('Over £50,000')
    else:
        print('Under £50,000') 

lst = ['Geeks', 'For', 'Geeks', 'is', 'portal', 'for', 'Geeks']
lst2 = [110000, 220000, 3300, 440000, 55, 66, 77000]


df = pd.DataFrame(list(zip(lst, lst2)),
                  columns=['Name', 'Salary']) 
df['Salary'].apply(SalaryCheck)[0]

另一种方法:

(employee['salary'] > 50000).replace({True: 'Over', False: 'Under'})

employee['salary'] > 50000返回一系列的True/False,然后用所需的文本替换True和False。你知道吗

相关问题 更多 >