假面的假面 发表于 2022-6-27 23:16:26

pandas新增列判断带入值问题

import pandas as pd
def c(x):
    if x["类别1"]>0 and x["类别1"]<8:
      return 7
    return x["类别2"]

data=[['1','2'],['0','5'],['4','2'],['8','6'],['6','4']]
df=pd.DataFrame(data,columns=['类别1','类别2'],dtype=int)

#新增一个类别的列,用来判断类别1的状态,如果类别1在1-7之间则新增的列均返回7,如果类别1=0或者=8则返回类别2的值。下面调用函数和写的lambda匿名函数则报错。求大神指点
df.loc[:"类别"]=df.apply(c,axis=1)

df['类别']=lambda df['类别']:7 if df["类别1"]>0 and df["类别1"]<8 else df["类别2"]


#新增一个类别的列,用来判断类别1的状态,如果类别1在1-7之间则新增的列均返回7,如果类别1=0或者=8则返回类别2的值。下面调用函数和写的lambda匿名函数则报错。求大神指点

傻眼貓咪 发表于 2022-6-28 08:54:52

df['类别'] = 7 if df["类别1"]>0 and df["类别1"]<8 else df["类别2"]

假面的假面 发表于 2022-6-28 20:41:49

依旧报错。。。。。

假面的假面 发表于 2022-6-29 18:15:04

up

假面的假面 发表于 2022-6-29 21:28:27

没有人解答么?

假面的假面 发表于 2022-6-30 21:45:38

....

Astray.R 发表于 2022-7-4 13:41:31

你这都是str格式啊
>和<怎么也得用数值吧

Astray.R 发表于 2022-7-4 13:44:41

import pandas as pd
def c(x,y):
    if int(x)>0 and int(x)<8:
      return 7
    else:
      return y

data=[['1','2'],['0','5'],['4','2'],['8','6'],['6','4']]
df=pd.DataFrame(data,columns=['类别1','类别2'],dtype=int)

df["类别"]=df.apply(lambda a:c(a['类别1'],a['类别2']),axis=1)
页: [1]
查看完整版本: pandas新增列判断带入值问题