行内条件语句:Pandas为新列分配值

2024-04-25 05:14:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用assign有条件地为列赋值。你知道吗

我尝试使用pandas assign创建一个新列,并在列SV\u 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.哪里. 为什么我要用numpy?这个简单的功能不应该是熊猫的一部分吗?你知道吗

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


Tags: 标记ltgtpandasif条件lengthelse
1条回答
网友
1楼 · 发布于 2024-04-25 05:14:45

通过使用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。pandaic的方法是使用numpy.where

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

相关问题 更多 >