Python 从现有数据帧列的条件创建新的数据帧列?
我有一个由3列组成的数据框:经度、纬度和面积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.
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分钟