Python ';合并';列表中元素上的2个数据帧?

Python ';合并';列表中元素上的2个数据帧?,python,pandas,list,merge,Python,Pandas,List,Merge,我想进行以下合并(难以用语言描述): 这是我的数据帧 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']

我想进行以下合并(难以用语言描述): 这是我的数据帧

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']
 .
 .
 .
结果应该是这样的

      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中

我认为这是一个类似的问题 但我看不出有什么解决办法


我查阅了pandas关于连接、联接和合并的文档,但也没有找到解决方案

您可以在
df9
中查找值:

df8['contents'] = df8['names'].apply(lambda l: [df9['text'].loc[name] for name in l])
使用:


这里有一条路

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

df8['content']=df8['names'].apply(lambda x:[df9.loc[name,'text'][0]表示x中的名称))

如果在
df9
中找不到名称,则返回错误。您可以使用


df8['content']=df8['names'].apply(lambda x:[df9['text'].get(name)[0]如果df9['text'])。get(name)else None for name in x])

这将有一个列表,其中包含找到的每个名称的文本,以及未找到的任何名称的
None

如果您所使用的
df9
for只是作为一个查找表,那么将其存储为字典会更合适,在这种情况下


df8['content']=df8['names'].apply(lambda x:[my_dict.get(name)[0]如果my_dict.get(name)在x中的name没有其他值])

@user11638654这是假设
调用者
是一列,根据提供的数据帧,我使用了原始df,没有设置索引和drop等
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']])
到目前为止,这是有效的,但我如何将df8.contents添加到字符串列表中(如问题中)请参见@WeNYoBen的答案:)@user1163868454啊,happy Coding如果你能帮助跟进,那就太好了
                   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['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