pandas 如何确定df1中column1的值包含在df2中column1中严格从左开始(python)

zbwhf8kr  于 2022-12-16  发布在  Python
关注(0)|答案(2)|浏览(138)

我有2个 Dataframe :

df1=pd.DataFrame({'number': ['14578', '45621', '1564']})
df2=pd.DataFrame({'number': ['1457891521', '123456215', '15643']})

我的问题是如何能够确定df1 ['number']是否包含在df2 ['number']中严格从左开始。
预期结果:

number  full number
0   14578   1457891521
1   45621   0
2   1564    15643
cl25kdpy

cl25kdpy1#

不幸的是,您需要在此处循环:

df1['full number'] = [b if b.startswith(a) else ''
                      for a,b in zip(df1['number'], df2['number'])]

输出:

number full number
0  14578  1457891521
1  45621            
2   1564       15643
ctehm74n

ctehm74n2#

另一个可能的解决方案是使用numpy,具体来说就是numpy.char.startswith

x2, x1 = df2['number'].values.astype(str), df1['number'].values.astype(str)
out = df1
out['full number'] = df2.loc[np.char.startswith(x2, x1), 'number']

输出:

number full number
0  14578  1457891521
1  45621         NaN
2   1564       15643

相关问题