从多个数据框创建列

时间:2017-02-15 16:46:52

标签: python pandas

我需要根据dataframe字段的值创建一些新列,并根据某些费率查找dataframe

df1

    zone    hh      hhind
0   14      112.0   3.4
1   15      5.0     4.4
2   16      0.0     1.0

look_up df为

    ind     per1    per2    per3    per4
0   1.0     1.000   0.000   0.000   0.000
24  3.4     0.145   0.233   0.165   0.457
34  4.4     0.060   0.114   0.075   0.751   

如何通过将基于df1.hh1look_up.per1 <{p>的df1.hhind相乘来更新lookup.ind

    zone    hh      hhind  hh1
 0  14      112.0   3.4    16.240
 1  15      5.0     4.4    0.300
 2  16      0.0     1.0    0.000

目前我通过合并表格和算术来获得结果。

r = pd.merge(df1, look_up, left_on="hhind", right_on="ind")
r["hh1"] = r.hh *r.per1

我想通过不合并表格来了解是否有更直接的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

您可以先将 hhind ind 分别设置为$('body').on('click','a',function(e) { e.preventDefault(); //rest of your code }); df1数据帧的索引轴。然后,将 hh per1 元素中的相应元素相乘。

将这些结果映射到 hhind 列,然后将其分配给新列,如下所示:

look_up

enter image description here

答案 1 :(得分:1)

另一种解决方案:

df1['hh1'] = (df1['hhind'].map(lambda x: look_up[look_up["ind"]==x]["per1"])) * df1['hh']