我有一个变量,“ImageName
”,它的范围是0-1600。我想根据“ImageName
”的值创建一个新变量,“LocationCode
”。在
如果“ImageName
”小于70,我希望“LocationCode
”为1。如果'ImageName
'在71到90之间,我希望'LocationCode
'为2。我一共有13个不同的密码。我不知道怎么用python pandas写这个。我试过了:
def spatLoc(ImageName):
if ImageName <=70:
LocationCode = 1
elif ImageName >70 and ImageName <=90:
LocationCode = 2
return LocationCode
df['test'] = df.apply(spatLoc(df['ImageName'])
但它返回了一个错误。我显然没有用正确的方式来定义事物,但我不知道如何去定义。在
在Python中,使用字典查找表示法查找行中的字段。字段名是
ImageName
。在下面的spatLoc()
函数中,参数行是一个包含整行的字典,通过使用字段名作为字典的键,可以找到一个单独的列。在您只需使用2个布尔掩码:
通过使用掩码,您只需设置满足布尔条件的值,对于第二个掩码,您需要使用
&
运算符来and
条件,并根据运算符的优先级将条件括在括号中实际上,我认为最好定义bin值并调用^{} ,例如:
^{pr2}$这里的bin值是使用
range
生成的,但是您可以自己传递bin值列表,一旦有了bin值,就可以定义一个查找dict:现在可以调用^{} 并添加新列:
上面的内容可以修改以满足您的需要,但这只是为了演示一种方法,它应该是快速的,而且不需要迭代df。在
相关问题 更多 >
编程相关推荐