Python 带np.where条件的列的切片字符串不起作用
我的专栏是这样的: 我想通过对包含“-”的“Policy”列进行切片来创建一个新列,如果不包含“-”,它将返回原始值。预期值是“-”之前的字符串 这是我的代码:Python 带np.where条件的列的切片字符串不起作用,python,pandas,numpy,Python,Pandas,Numpy,我的专栏是这样的: 我想通过对包含“-”的“Policy”列进行切片来创建一个新列,如果不包含“-”,它将返回原始值。预期值是“-”之前的字符串 这是我的代码: df['New_col']=np.where(df['Policy'].str.contains('-'),df['Policy'].str.slice(0,df['Policy'].str.find('-'),1),df['Policy']) 但结果是所有人都失去了价值。 请告诉我哪里做错了。我认为解决方案应该是简化-按-拆分值并
df['New_col']=np.where(df['Policy'].str.contains('-'),df['Policy'].str.slice(0,df['Policy'].str.find('-'),1),df['Policy'])
但结果是所有人都失去了价值。
请告诉我哪里做错了。我认为解决方案应该是简化-按
-
拆分值并选择第一个值,如果不存在-
则选择相同的值,因此np。此处不需要:
df['New_col']=df['Policy'].str.split('-').str[0]
预期产量是多少?在-
之前或-
之后的值?您的解决方案非常好。但我还是想知道为什么np.where不起作用。在本例中,如果我将df['Policy'].str.find('-')替换为14这样的数字,它就可以工作了。所以问题可能就在这里。@DinhQuangTuan-原因是df['Policy'].str.slice
如何工作-可能存在类似df['Policy'].str.slice(0,5)
的传递标量,但在解决方案中不是数组,而是5
,所以失败了。