Python 根据其他两个数据框列中的值的条件创建新列

Python 根据其他两个数据框列中的值的条件创建新列,python,pandas,dataframe,conditional,Python,Pandas,Dataframe,Conditional,我是python新手。我有一种感觉,有一个快速的解决办法,但没有什么似乎很快对我来说 我有一个150000多行的数据帧,数据。其中包括两个系列:gridcode和CH4\u通量。我想创建一个新的分类列,名为category,它根据以下四个条件为每一行分配一个分类标识符: cat1 = data[(data.gridcode <= threshAV) & (data.CH4_Flux >= threshAM)] cat2 = data[(data.gridcode >=

我是python新手。我有一种感觉,有一个快速的解决办法,但没有什么似乎很快对我来说

我有一个150000多行的数据帧,
数据
。其中包括两个系列:
gridcode
CH4\u通量
。我想创建一个新的分类列,名为
category
,它根据以下四个条件为每一行分配一个分类标识符:

cat1 = data[(data.gridcode <= threshAV) & (data.CH4_Flux >= threshAM)]
cat2 = data[(data.gridcode >= threshAV) & (data.CH4_Flux >= threshAM)]
cat3 = data[(data.gridcode <= threshAV) & (data.CH4_Flux <= threshAM)]
cat4 = data[(data.gridcode >= threshAV) & (data.CH4_Flux <= threshAM)]
cat1=data[(data.gridcode=threshAM)]
cat2=数据[(data.gridcode>=threshAV)和(data.CH4\u通量>=threshAM)]
cat3=data[(data.gridcode通过多个布尔掩码用于新列:

#removed filtering by data[]
m1 = (data.gridcode <= threshAV) & (data.CH4_Flux >= threshAM)
m2 = (data.gridcode >= threshAV) & (data.CH4_Flux >= threshAM)
m3 = (data.gridcode <= threshAV) & (data.CH4_Flux <= threshAM)
m4 = (data.gridcode >= threshAV) & (data.CH4_Flux <= threshAM)

data['category'] = np.select([m1, m2, m3, m4], [1,2,3,4])
通过多个布尔掩码用于新列:

#removed filtering by data[]
m1 = (data.gridcode <= threshAV) & (data.CH4_Flux >= threshAM)
m2 = (data.gridcode >= threshAV) & (data.CH4_Flux >= threshAM)
m3 = (data.gridcode <= threshAV) & (data.CH4_Flux <= threshAM)
m4 = (data.gridcode >= threshAV) & (data.CH4_Flux <= threshAM)

data['category'] = np.select([m1, m2, m3, m4], [1,2,3,4])

这对我不起作用。
data['category']=np.select([cat1,cat2,cat3,cat4],[1,2,3,4])
返回
值错误:形状不匹配:对象无法广播到单个形状
是错误是
值错误:形状不匹配:对象无法广播到单个形状
@celder88-是否可以添加一些数据样本?我不确定您的意思。是否要查看数据帧的样本?@celder88-我想知道了问题,您需要删除
data[]
form
cat1=data[(data.gridcode=threshAM)]
to
cat1=(data.gridcode=threshAM)
,检查我的答案这对我不起作用。
data['category']=np。选择([cat1,cat2,cat3,cat4],[1,2,3,4]))
返回
值错误:形状不匹配:对象无法广播到单个形状
是错误是
值错误:形状不匹配:对象无法广播到单个形状
@celder88-是否可以添加一些数据样本?我不确定您的意思。是否要查看数据帧的样本?@celder88-我想知道了问题,您需要删除
data[]
表单
cat1=data[(data.gridcode=threshAM)]
cat1=(data.gridcode=threshAM)
,检查我的答案