[英]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.