首页 > 解决方案 > 如何通过在另一个数据框中根据索引查找值并将值设置为特定的行和列来设置值?

问题描述

我有两个看起来像这样的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]

通过选择我要放入的行进入另一个数据框中的现有列?

标签: python-3.xpandas

解决方案


我相信你需要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')

推荐阅读