首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“合并”列表中元素上的2条数据?

“合并”列表中元素上的2条数据?
EN

Stack Overflow用户
提问于 2019-06-20 15:39:25
回答 4查看 90关注 0票数 2

我想做以下合并(很难用文字描述):这是我的数据

代码语言:javascript
复制
df8=pd.DataFrame({'names':[['Hans','Meier'],['Debby','Harry','Peter']]})
    names
 0 ['Hans','Meier']
 1 ['Debby','Harry','Peter']

df9=pd.DataFrame({'caller':['Hans','Meier','Debby','Harry','Peter'],'text':[['hi im hans'],['hi im meier'],['hi im debby'],['hi im harry'],['hi im peter']]})
df9.set_index(df9.caller, inplace = True)
df9.drop('caller', axis = 1, inplace = True)

 caller     text
 Hans        ['hi im hans']
 Meier       ['hi im meier']
 .
 .
 .

结果应该是这样的

代码语言:javascript
复制
      names                  content
0 ['Hans','Meier']          ['hi im hans', 'hi im meier']
1 ['Debby','Harry','Peter'] ['hi im debby', 'hi im harry', 'hi im peter']

因此,如果df9中的人员是相应的姓名列表中的一个元素,则该人的文本将出现在df8中。

我认为这是一个类似于this的问题,但我看不出解决办法

我查看了熊猫关于连接、加入和合并的文档,但也没有找到解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-20 15:49:14

这里有一条路

代码语言:javascript
复制
df9['text']=df9['text'].str[0]

l=[df9.loc[x,'text'].tolist() for x in df8.names]
Out[505]: [['hi im hans', 'hi im meier'], ['hi im debby', 'hi im harry', 'hi im peter']]

df9['cont']=l
票数 6
EN

Stack Overflow用户

发布于 2019-06-20 15:45:45

您可以在df9中查找值

代码语言:javascript
复制
df8['contents'] = df8['names'].apply(lambda l: [df9['text'].loc[name] for name in l])
票数 5
EN

Stack Overflow用户

发布于 2019-06-20 15:48:59

使用s.get

代码语言:javascript
复制
d=df9.set_index('caller')['text']
df8=df8.assign(content=df8.names.apply(lambda x:[d.get(i) for i in x]))
print(df8)
代码语言:javascript
复制
                   names                                        content
0          [Hans, Meier]                  [[hi im hans], [hi im meier]]
1  [Debby, Harry, Peter]  [[hi im debby], [hi im harry], [hi im peter]]
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56689519

复制
相关文章

相似问题

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