Pandas数据框架基于其他列创建计算列,但处理无值的问题

1 人关注

我试图在pandas中计算一列,根据其他列的值对行进行分类,但是我很难使我的逻辑在数据集中有无值的情况下发挥作用。

我有一个这样的数据名,显示两周之间的记录值。

我希望能够创建一个列,将两者之间的差异总结为4个类别

  • value increased (occurs when current_week_value > prior_week_value)
  • value decreased (occurs when current_week_value < prior_week_value)
  • value not changed (occurs when current_week_value == prior_week_value)
  • new record (occurs when prior_week_value = None)
  • 在这种情况下,它将看起来像这样

    我曾试图用if语句来实现这一点,但在识别None值的第一道关卡上就失败了。当我运行下面的代码时,我得到的是包含None值的行被评估为false,并在else语句中返回测试值。

    if df['prior_week_value'].isnull().all():
     df['value_category] = 'new record'
    else:
     df['value_category] = 'test'
    

    如果对这个问题有任何帮助,我们将不胜感激。

    python
    pandas
    dataframe
    if-statement
    calculated-columns
    disguise-js
    disguise-js
    发布于 2022-08-08
    1 个回答
    disguise-js
    disguise-js
    发布于 2022-08-08
    已采纳
    0 人赞同

    感谢Umar.H的帮助--我做了一个小调整,成功了,以下是代码。

    s = df['prior_week_value'] # this is the change i made to the code provided
    cond = [
        s.isnull(),
        df['current_week_value'] > s,
        df['current_week_value'] < s,
        df['current_week_value'] == s,