【发布时间】:2021-03-11 18:24:30
【问题描述】:
数据框:
df1:
ind_lst
[agriculture_dairy, analytics]
[architecture_planning, advertising_pr_events, analytics]
df2:
ind score
advertising_pr_events 3.672947168
agriculture_dairy 3.368266582
airlines_aviation_aerospace 3.60798955
analytics 3.67752552
architecture_planning 3.853236675
如上所示,我有 2 个数据框。
df2 的列 ind 是字符串类型且具有行业名称。 df2.score 对每个行业都有一个独特的分数。
df1的ind_lst列是由df2.ind的独特元素的不同组合形成的行业名称列表
我想在 df1 avg_score 中创建一列,最终输出如下:
df1 的 row1 中的 avg_score 是 df2 中对应于 Agriculture_dairy, analytics 的得分的平均值
df1 的 row2 中的 avg_score 是 df2 中对应于 architecture_planning、advertising_pr_events、analytics 的分数的平均值。
df1
ind_lst avg_score
[agriculture_dairy, analytics] 3.522896051
[architecture_planning, advertising_pr_events, analytics] 3.734569787666667
如何在 python 中实现这个? 我试过这个:
avg=[]
avgs=[]
for i in df1.ind_lst:
for j in i:
a= df2[df2['ind'] == j].index
avg.append(df2.loc[a]['score'])
avgs.append(mean(avg))
df1['avg_score']= avgs
代码运行不正常。我得到一个空列表作为输出。
注意:我已经对数据帧进行了采样,并且只共享了问题陈述的一个子集。真正的数据帧 df1 有 90k 条目,而 df2 有 860 行。
【问题讨论】:
标签: python pandas dataframe feature-extraction feature-engineering