猿问

熊猫应用自定义函数问题('if'语句不起作用)

我制作了应用的func如下:


def NewMonth(x):


    if x == 1 or 2:

        return 1

    elif x == 3 or 4:

        return 2

    elif x == 5:

        return 3

    elif x == 6:

        return 4

    elif x == 7 or 8:

        return 5

    elif x == 9 or 10:

        return 6

    elif x == 11 or 12:

        return 7


df_train.apply(lambda y: NewMonth(y['month']), axis=1)

但是,我得到的所有输出都是 10,000 行中的“1”。我找不到我的 NewMonth 函数有什么问题。


幕布斯7119047
浏览 189回答 3
3回答

九州编程

其他解决方案解决了您的问题,但实际上对于这种类型的计算,您应该使用.map或pd.cut样本数据:import numpy as npimport pandas as pddf = pd.DataFrame({'Month': np.random.randint(1,13,10)}).mapd = {1:1, 2:1, 3:2, 4:2, 5:3, 6:4, 7:5, 8:5, 9:6, 10:6, 11:7, 12:7}df['Mapped'] = df.Month.map(d)#   Month  Mapped#0      3       2#1      3       2#2      7       5#3      2       1#4      4       2#5     11       7#6     12       7#7     10       6#8      7       5#9      2       3pd.cutbins = [0,2,4,5,6,8,10,12]  # Right edgeslabels= [1,2,3,4,5,6,7]df['Cut'] = pd.cut(df.Month, bins=bins, labels=labels)# If want integer labels# df['Cut'] = pd.cut(df.Month, bins=bins, labels=False)+1 #   Month  Mapped Cut#0      3       2   2#1      3       2   2#2      7       5   5#3      2       1   1#4      4       2   2#5     11       7   7#6     12       7   7#7     10       6   6#8      7       5   5#9      2       1   1

慕姐4208626

请将您的if条件更改为:if x == 1 or x == 2:

杨魅力

在每个 if 语句中,您目前只将 x 与一个数字进行比较。例如,在第一个中,您说“如果 x 为 1,或者如果 2 为真”。一个数字每次都会返回 True,因此即使 x 可能不是 1,您仍然每次都会返回 1,因为 2 将始终为真。看来你要做的是——if x == 1 or x == 2    return 1等等。
随时随地看视频慕课网APP

相关分类

Python
我要回答