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

“合并”列表中元素上的2个数据格式?-双键
EN

Stack Overflow用户
提问于 2019-06-21 20:14:31
回答 1查看 46关注 0票数 1

这是对这个'merge' 2 dataframes on elements from list?的后续问题--扩展是,现在一些名称可以在df8中加倍,所以为了能够区分各自的文本,我创建了一个日期。

代码语言:javascript
复制
df8=pd.DataFrame({'Dates':['2017-12-14', '2017-12-14','2017-12-16'],'names':[['Hans','Meier'],['Debby','Harry'],['Hans','Harry']]})
df9=pd.DataFrame({'Date':['2017-12-14','2017-12-14','2017-12-14','2017-12-14','2017-12-14','2017-12-16','2017-12-16'],'caller':['Hans','Meier','Debby','Harry','Peter','Hans','Harry'],'text':[['hi im hans'],['hi im meier'],['hi im debby'],['hi im harry'],['hi im peter'],['my name is hans'],['my name is harry']]})
df9.set_index(df9.Date, inplace = True)
df9.drop('Date', axis = 1, inplace = True)
df9.head(10)


Date        names    text
2017-12-14  Hans    [hi im hans]
2017-12-14  Meier   [hi im meier]
2017-12-14  Debby   [hi im debby]
2017-12-14  Harry   [hi im harry]
2017-12-14  Peter   [hi im peter]
2017-12-16  Hans    [my name is hans]
2017-12-16  Harry   [my name is harry]

结果应该是,如果该人在相应的列表中,则df9中的人所表示的文本将出现在df8中,另外,姓名和日期现在必须匹配。

所以输出是

代码语言:javascript
复制
Date          names                  content
2017-12-14 ['Hans','Meier']          ['hi im hans', 'hi im meier']
2017-12-14 ['Debby','Harry',]        ['hi im debby', 'hi im harry',]
2017-12-16 ['Hans', 'Harry']         ['my name is hans','my name is harry']

应用上一个问题的结果

代码语言:javascript
复制
df9['text']=df9['text'].str[0]
l=[df9.loc[x,'text'].tolist() for x in df8.names]
df8['cont']=l

产生此错误

“[‘汉斯’,‘梅尔’都不在索引里”

这与日期索引有关,但我不知道如何解决。我和loc[]玩了一会儿,但是错误仍然存在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 14:47:02

IIUC,你可以这样做:

扁平df8并将其分配给m

代码语言:javascript
复制
m=pd.DataFrame({'Dates':df8.loc[df8.index.repeat(df8.names.str.len()),'Dates'],
         'names':np.concatenate(df8.names)})

然后,mergegroupby

代码语言:javascript
复制
(m.merge(df9,left_on=['Dates','names'],right_on=['Date','caller']).
groupby('Dates')['text'].apply(sum).reset_index())
代码语言:javascript
复制
        Dates                                 text
0  2017-12-14            [hi im hans, hi im meier]
1  2017-12-15           [hi im debby, hi im harry]
2  2017-12-16  [my name is hans, my name is harry]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56709889

复制
相关文章

相似问题

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