【发布时间】:2019-11-04 16:27:22
【问题描述】:
这是'merge' 2 dataframes on elements from list?的后续问题 扩展名是,现在某些名称可以在 df8 中翻倍,因此为了能够区分各个文本,我创建了一个日期。
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 中,另外名称和日期现在必须匹配
所以输出是
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']
应用上一个问题的结果
df9['text']=df9['text'].str[0]
l=[df9.loc[x,'text'].tolist() for x in df8.names]
df8['cont']=l
产生这个错误
“[['Hans', 'Meier']] 中没有一个在 [index] 中”
这显然与日期索引有关,但我不知道如何解决。
我玩了一点loc[],但错误仍然存在
【问题讨论】: