pandas新增列判断带入值问题
import pandas as pddef 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匿名函数则报错。求大神指点 df['类别'] = 7 if df["类别1"]>0 and df["类别1"]<8 else df["类别2"] 依旧报错。。。。。 up 没有人解答么?
.... 你这都是str格式啊
>和<怎么也得用数值吧 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]