我的pandas数据帧有两列,我需要检查列A每一行的值是否是以列B对应行的值开头的字符串,反之亦然。
似乎Series方法.str.startswith
无法处理矢量化输入,所以我需要在列表推导式中对两列进行zip处理,并创建一个与任何两列中的一列具有相同索引的新的pd.Series
。
我希望这是一个矢量化操作,可用于操作可迭代对象的.str
访问器,但类似于这样的操作会返回NaN:
df = pd.DataFrame(data={'a':['x','yy'], 'b':['xyz','uvw']})
df['a'].str.startswith(df['b'])
我的工作解决方案如下:
pd.Series(index=df.index, data=[a.startswith(b) or b.startswith(a) for a,b in zip(df['a'],df['b'])])
我怀疑有更好的方法来解决这个问题,因为这样做也会使系列上的所有字符串方法受益。
是否有更美观或更有效的方法来做到这一点?