【问题标题】:How to match and extract value between two dataframes?如何匹配和提取两个数据帧之间的值?
【发布时间】:2020-02-24 20:04:22
【问题描述】:

我有两个 dfs:

df1:

col1      col2
text        1 

df2:

col1
text 123

我想查看 df1.col1 中的值是否在 df2.col1 中,如果存在,我想将 df2.col1 的值提取到 df1 中的新列中。

更新 df1:

col1      col2     col_extracted
text        1         text 123

我能想到的最多是进行字符串匹配并返回一个布尔值,如下所示:

df1['col1'].isin(df2['col1'])

但是,由于我在进行部分字符串匹配,所以我在匹配中得到了 FALSE。

【问题讨论】:

  • 您的数据帧有多长?
  • @QuangHoang df1 是一行 15 列,df2 是 151 行 1 列。为什么 df 的长度很重要?
  • 因为字符串搜索很慢:)

标签: python-3.x pandas


【解决方案1】:

我询问了数据帧的长度,因为搜索/匹配多个字符串模式通常很慢。你的数据很小,所以这不是问题。这是一个解决方案:

pd.concat((df1, 
           df2[df2['col1'].str.contains(df1.col1.iloc[0])]
               .add_suffix('_extracted')
          ), axis=1)

输出:

   col1  col2 col_extract
0  text     1    text 123

【讨论】:

  • 我收到错误error: multiple repeat,如果可能,我正在研究另一种解决方案。
  • @RustyShackleford 因为您的df1 是一行,请参阅我的更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 2019-03-16
相关资源
最近更新 更多