我正在尝试使用pandas分配条件将值分配给列。
如果列sv_length指定的长度值> = 50且InDel如果长度<50,我尝试使用pandas Assign创建新列并将其标记为SV。
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/
答案 0 :(得分:0)
通过使用apply
支持此语法。
df3 = df2.assign(
InDel_SV=df2.sv_length.apply(lambda x: 'InDel' if x < 50 else 'SV'))
但是,出于性能考虑,建议您使用numpy,因为apply is a slow convenience function。完成此操作的熊猫方法是使用numpy.where
:
df3 = df2.assign(InDel_SV=np.where(df2.sv_length < 50, 'InDel', 'SV'))