繁体   English   中英

内联if语句条件pandas为新列赋值

[英]Inline if statement conditional pandas assign value to new column

我正在尝试使用pandas assign有条件地为列分配值。

我尝试使用pandas assign来创建一个新列,如果列sv_length指定的长度值> = 50,则将其标记为SV,如果长度<50则使用InDel。

df3=df2.assign(InDel_SV='InDel' if df2.sv_length < 50 else 'SV')

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

其他示例使用np.where。 为什么我要使用numpy? 这个简单的功能不应该成为熊猫的一部分吗?

https://chrisalbon.com/python/data_wrangling/pandas_create_column_using_conditional/

通过使用apply支持此语法。

df3 = df2.assign(
    InDel_SV=df2.sv_length.apply(lambda x: 'InDel' if x < 50 else 'SV'))

但是,为了提高性能,建议您使用numpy,因为apply是一个缓慢的便利功能 这样做的pandaic方式是使用numpy.where

df3 = df2.assign(InDel_SV=np.where(df2.sv_length < 50, 'InDel', 'SV'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM