如何通过基于另一个数据帧中的索引查找值并将值设置为特定的行和列来设置值?

时间:2019-03-15 06:49:50

标签: python-3.x pandas

我有两个看起来像这样的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]
通过选择要放入的行将

插入另一个数据框中的现有列?

1 个答案:

答案 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')