首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中合并两个长度不等的列中包含文本的数据框?

如何在python中合并两个长度不等的列中包含文本的数据框?
EN

Stack Overflow用户
提问于 2019-11-11 19:05:15
回答 2查看 48关注 0票数 1

我知道合并两个数据帧可以使用下面的代码来完成

代码语言:javascript
复制
left2.merge(right2, left_on='keyLeft', right_on='keyRight', how='inner')

在此link中详细说明了合并过程

但是,我有一个数据帧,它的文本如下

Dataframe1

代码语言:javascript
复制
 61     ability produce required documents based trans...
 237    ability setup track definable error sources
 440    ability log discrpeancies received vs shipped ...
1786    training education cover supply chain principl...
1931    system show estimated cost make reslotting mov...        ​

Dataframe2

代码语言:javascript
复制
    KeyWords
0   ability
1   require
2   document
3   base
4   transportation

现在,我想要连接数据帧,并且希望复制行,因为Dataframe2的单词可以出现在Dataframe1的多行中。

当我使用一个简单的合并时,我得到一个缺省的空值

代码语言:javascript
复制
input_file = Dataframe2.merge(Dataframe1, left_on='KeyWords', right_on='Questions', how = 'left')

    KeyWords       Questions
0   ability         NaN
1   require         NaN
2   document        NaN
3   base            NaN
4   transportation  NaN

我如何加入才能得到值呢?谢谢

我的预期输出应该是这样的。

代码语言:javascript
复制
KeyWords   Questions 
ability    ability produce required documents based trans...
ability    ability setup track definable error sources
ability    ability log discrpeancies received vs shipped ...
EN

回答 2

Stack Overflow用户

发布于 2019-11-11 19:14:56

使用pandas.Series.str.contains的一种方式

代码语言:javascript
复制
df2['Questions'] = df2['KeyWords'].apply(lambda x: df1['Qs'][df1['Qs'].str.contains(x)].index.tolist())
print(df2)

输出:

代码语言:javascript
复制
         KeyWords       Questions
0         ability  [61, 237, 440]
1         require            [61]
2        document            [61]
3            base            [61]
4  transportation              []
票数 1
EN

Stack Overflow用户

发布于 2019-11-11 19:22:09

我们可以使用Series.str.split + DataFrame.explode。然后使用DataFrame.merge

代码语言:javascript
复制
df1['list_words']=df1['Questions'].str.split(' ')
new_df1=df1.explode('list_words')
df_merge=df2.merge(new_df1,left_on='KeyWords',right_on='list_words',how='inner').drop('list_words',axis=1)
print(df_merge)

输出

代码语言:javascript
复制
   KeyWords                                            Questions 
0   ability    ability produce required documents based trans...
1   ability    ability setup track definable error sources
2   ability    ability log discrpeancies received vs shipped ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58800125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档