我有两个看起来像这样的df:
df1:
site
0 a.com
1 b.com
2 c.com
df2:
site
0 a.com
我能够根据以下逻辑提取索引:
idx = df2.site.isin(df1.site).index
我能够选择要插入到列中的值,如下所示:
df1.site.loc[idx]
但是,当我创建新字段并选择要插入的行/列时,插入的值为'nan'。我可以这样做: df2.site.loc [[0]] = df1.site.loc [idx]
如何从以下位置插入字符串:
df1.site.loc[idx]
通过选择要放入的行将插入另一个数据框中的现有列?
答案 0 :(得分:2)
我相信您需要DataFrame.loc
,但是因为需要设置一个值是必要的,请通过索引选择第一个值来将idx转换为标量:
idx = df2.site.isin(df1.site).index[0]
df2.loc[0, 'site'] = df1.loc[idx, 'site']
如果没有匹配值,则可以使用更多常规解决方案-添加了默认值:
idx = df2.site.isin(df1.site).index
df2.loc[0, 'site'] = next(iter(df1.loc[idx, 'site']), 'no match')
也许可以像下面这样使用merge
df2 = df2.merge(df1, on='site', how='left')