Python 从现有数据帧列的条件创建新的数据帧列?

Python 从现有数据帧列的条件创建新的数据帧列?,python,pandas,dataframe,data-science,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.

我有一个由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
....
我需要第四列,这取决于面积的值。如果面积大于阈值,则应称为“农村”,如果面积较小,则应称为“城市”

我想把它实现为一个带有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'
范围内的i(len(df)):

如果df['area'][i]可以使用
np.where
返回根据条件选择的元素。第一个参数是您的条件,第二个参数是如果条件为,返回值,最后一个参数是如果条件为

df['CellType'] = np.where(df['area'] < 0.002, 'urban','rural')
df['CellType']=np.其中(df['area']<0.002,'urban','rural')

嗨!虽然这可能会提供答案,但通常不鼓励在StackOverflow中只保留代码答案。请解释为什么这是一个解决方案,因为它将帮助OP和未来的访问者。谢谢@d_kennetz我错了,我对答案加上解释。感谢tipThat看起来好多了,我希望你能看到这是多么有益!谢谢你,特里!,它工作得很好,在对5k电池的测试中,需要3.46毫秒,而不是之前的7分钟