根据现有条件创建新的DataFrame列?

时间:2019-04-05 16:18:23

标签: python pandas dataframe data-science

我有一个由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个单元格上运行时,这将永远花费

有没有办法使这项任务更快? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用np.where返回根据条件选择的元素。第一个参数是您的条件,第二个参数是条件为 True 时的返回值,最后一个参数是条件是 False

时的返回值
df['CellType'] = np.where(df['area'] < 0.002, 'urban','rural')