我有一个由3列组成的数据框:经度,纬度和面积。
CELL NAME Longitude Latitude area
LE1072_012 -0.072457 61.042381 6.170170e-01
LE1437_011 1.711201 60.936088 5.960055e-01
LE2614_012 0.071279 58.835267 4.412428e-01
LE2826_013 1.558309 60.730385 2.844340e-01
LE2346_011 -1.056118 59.646612 2.528572e-01
LE2676_012 -0.198150 58.546112 2.395335e-01
LE2526_012 0.594452 59.184265 2.392216e-01
....
我需要第四列,该列取决于area的值。如果面积大于阈值,则应说“农村”,如果面积较小,则应说“城市”
我想使用if将其实现为功能
def CellType(area):
if area > threshold
a='rural'
else
a='urban'
return a
然后这样称呼
df['CellType']=CellType(df['area'])
这样,我得到一个错误,指出一个序列的条件不明确
然后我尝试了这段代码
for i in range(len(df)):
if df['area'][i]<0.002:
df['CellType'][i]='urban'
else:
df['CellType'][i]='rural'
这行得通,但是当我在15,000个单元格上运行时,这将永远花费
有没有办法使这项任务更快? 谢谢
答案 0 :(得分:1)
您可以使用np.where
返回根据条件选择的元素。第一个参数是您的条件,第二个参数是条件为 True 时的返回值,最后一个参数是条件是 False
df['CellType'] = np.where(df['area'] < 0.002, 'urban','rural')