简体   繁体   English

在行级别将列表元素添加到 Pandas 数据框

[英]adding list elements to pandas dataframe at row level

I have a function which returns 3 elements list which I have to enter in pandas dataframe.我有一个函数,它返回 3 个元素列表,我必须在 Pandas 数据框中输入它。 Function takes names and recommend 3 similar names in list which I have to map against it.函数采用names并推荐列表中的 3 个相似名称,我必须对其进行映射。

      names             
      a       
      b
      c

my desired dataframe would be我想要的数据框是

      names     recommendations             
      a         d
      a         e
      a         f  
      b         x
      b         y
      b         z
      c         p 
      c         q
      c         r

Function returns following output函数返回以下输出

 def get_recommendations(names, cosine_sim=cosine_sim):

     idx = indices[names]
     sim_scores = list(enumerate(cosine_sim[idx]))
     sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
     sim_scores = sim_scores[1:6]
     movie_indices = [i[0] for i in sim_scores]
     return list(df['names'].iloc[names_indices])

 get_recommendations('a') = ['d', 'e', 'f']  

I am doing following thing in Pandas , but this does not work.我正在Pandas做以下事情,但这不起作用。

 df['recommendations'] = df.apply(lambda row : get_recommendations(row['names']), axis=1)

First create new column by using apply and function首先使用applyfunction创建新列

Then use df.explode然后使用df.explode

df["recommendations"] = df["names"].apply(get_recommendations)

df = df.explode("recommendations")

print(df)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM