相关文章推荐
道上混的沙发  ·  [Day16] Python專案 - ...·  2 月前    · 
读研的橙子  ·  CSS组件_0 ...·  2 年前    · 
豁达的开心果  ·  SQL ...·  2 年前    · 
有腹肌的玉米  ·  Int32.Parse Method ...·  2 年前    · 

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,