我有两列楼层和总计楼层
df = pd.DataFrame({"floor": [1,2,30], "floors_total": [1, 50, 30]})
我想编写一个函数,例如如果连续两次将楼层总数和楼层中的两个值都相等,则返回“最后一层”,然后如果floor = 1,则返回“第一层”,如果其他则返回“其他” 我想将此应用到df
我正在尝试编写一个for循环:
def new(df):
a = "floor"
b = "floors_total"
for a,b in df.iteritems():
if a == b:
return "last floor"
elif a == 1:
return "first floor"
else:
return "other"
df["floor_postiton"] = df.apply(new)
我将新列中的所有行都设为NaN
答案 0 :(得分:0)
您可以使用np.where
避免在数据帧上进行(缓慢的)迭代:
df['floor_position'] = np.where(df['floor'] == df['floors_total'],
'last floor',
np.where(df['floor'] == 1, 'first floor',
'other'))