大佬们,Python中return返回的结果未正确匹配,应该要怎么调整呢

import pandas as pd 

test = {'日期':['2020-05-01','2020-05-02','2020-05-03','2020-05-04']}
test = pd.DataFrame(test)
print(test)


larbor_day = ['2020-05-01','2020-05-02']

def festival(date):
   for date in test['日期']:
        if date in larbor_day:
            return '劳动节'
        else:
            return '否'
test['节假日'] = test['日期'].map(festival)

print(test)

各位大佬,为什么return返回的结果跟实际不符合呢。

日期里面比如"2020-05-03"是不在larbor_day里面的,但是返回的结果却是"劳动节"。

想要日期“2020-05-03”对应返回的结果是否,应该如何调整呢。

import pandas as pd

test = {'日期': ['2020-05-01', '2020-05-02', '2020-05-03', '2020-05-04']}
test = pd.DataFrame(test)
print(test)

larbor_day = ['2020-05-01', '2020-05-02']


def festival(date):
    for i in test['日期']:
        if date in larbor_day:
            return '劳动节'
        else:
            return '否'


test['节假日'] = test['日期'].map(festival)
print(test)

第十一行循环的时候用i不用date

在festival函数中不需要再用循环了,map函数就是针对数组每一个元素映射的。将for date in test['日期']:那句去掉即可。另外用lambda函数更为简单,test['节假日'] = test['日期'].map(lambda x: '劳动节' if x in larbor_day else '否')

import pandas as pd

test = {'日期': ['2020-05-01', '2020-05-02', '2020-05-03', '2020-05-04']}
test = pd.DataFrame(test)
print(test)

larbor_day = ['2020-05-01', '2020-05-02']


def festival(date):
    if date in larbor_day:
        return '劳动节'
    else:
        return '否'


test['节假日'] = test['日期'].map(festival)

print(test)

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m