如何用函数和for循环比较数据框中的两列?

时间:2020-06-16 07:41:56

标签: python pandas dataframe

我有两列楼层和总计楼层

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

1 个答案:

答案 0 :(得分:0)

您可以使用np.where避免在数据帧上进行(缓慢的)迭代:

df['floor_position'] = np.where(df['floor'] == df['floors_total'],
                'last floor',
                np.where(df['floor'] == 1, 'first floor',
                     'other'))