在分组的熊猫df中使用IF-THEN创建新列

qqplot

我正在将简单的功能应用于已分组的df。下面是我正在尝试的。即使我尝试将功能修改为仅执行一个步骤,我仍然会遇到相同的错误。任何方向都将非常有帮助。

def udf_pd(df_group):
if (df_group['A'] - df_group['B']) > 1:
    df_group['D'] = 'Condition-1'
elif df_group.A == df_group.C:
    df_group['D'] = 'Condition-2'
else:
    df_group['D'] = 'Condition-3'

return df_group

final_df = df.groupby(['id1','id2']).apply(udf_pd)
final_df = final_df.reset_index()


ValueError: The truth value of a Series is ambiguous. Use a.empty, 
a.bool(), a.item(), a.any() or a.all().
Valdi_Bo

请注意,在groupby.apply中,该功能将应用于整个组在另一方面,每个如果条件必须归结为一个单一值(不向任何系列真/假值)。

因此,此函数中2列的每次比较都必须添加例如all()any(),如下面的示例所示:

def udf_pd(df_group):
    if (df_group.A - df_group.B > 1).all():
        df_group['D'] = 'Condition-1'
    elif (df_group.A == df_group.C).all():
        df_group['D'] = 'Condition-2'
    else:
        df_group['D'] = 'Condition-3'
    return df_group

当然,该函数可以返回整个组,例如由新列“扩展”,并且在这种情况下广播新列单个,因此当前组中的每一行都将接收该值。

我创建了一个测试DataFrame:

   id1  id2  A  B  C
0    1    1  5  3  0
1    1    1  7  5  4
2    1    2  3  4  3
3    1    2  4  5  4
4    2    1  2  4  3
5    2    1  4  5  4    

在此示例中:

  • 在第一组(id1 == 1id2 == 1)中,在所有行中A-B> 1,因此Condition-1True
  • 在第二组(ID1 == 1ID2 == 2),上述条件满足,但在所有的行,A ==Ç,所以条件-2
  • 在最后一组(id1 == 2id2 == 1)中,以上条件都不满足,因此Condition-3True

因此,结果df.groupby(['id1','id2']).apply(udf_pd)为:

   id1  id2  A  B  C            D
0    1    1  5  3  0  Condition-1
1    1    1  7  5  4  Condition-1
2    1    2  3  4  3  Condition-2
3    1    2  4  5  4  Condition-2
4    2    1  2  4  3  Condition-3
5    2    1  4  5  4  Condition-3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

  1. 1

    来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

  2. 2

    使用AWS Cognito和React的仅限Facebook / Google的登录名(无用户名/密码)

  3. 3

    创建Windows Phone 8应用并将其连接到数据库的最佳方法(最好是SQL Server)

  4. 4

    为什么Java中的System.out.println()打印到控制台?

  5. 5

    卷曲函数无法解析来自bash中变量的代理

  6. 6

    是什么在Android的consumer-rules.pro和proguard-rules.pro之间的区别?

  7. 7

    设置与Apache POI Excel表散点图标记图标的颜色

  8. 8

    将Qt Pyside2与asyncio await语法一起使用?

  9. 9

    崇高的文字+蟒蛇的蟒蛇

  10. 10

    任务':app:minifyReleaseWithR8'.java.lang.NullPointerException的执行失败(无错误消息)

  11. 11

    OpenJDK的和AdoptOpenJDK的区别

  12. 12

    大型数据集缓存到Spark内存中时,“超出了GC开销限制”(通过sparklyr和RStudio)

  13. 13

    “执行测试CMAKE_HAVE_LIBC_PTHREAD”失败实际上是什么意思?

  14. 14

    使用Core 2.2中的Identity,如何在关闭浏览器15分钟后保持会话活动?

  15. 15

    React中的ForwardRefExoticComponent和ForwardRefRenderFunction有什么区别?

  16. 16

    猫鼬查找结果,然后将字段替换为findOne

  17. 17

    如何降级Google Colab的Torch版本

  18. 18

    Keras提前停止回调错误,val_loss指标不可用

  19. 19

    如何避免VSCode中的“导入路径不能以.ts扩展名结尾”错误?

  20. 20

    Nuxt.JS:如何在页面中获取路由URL参数

  21. 21

    是否有为什么会AccessibilityManager.sInstance导致内存泄漏的一个原因?

热门标签

归档