首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas使用基于两个变量的map添加列

pandas使用基于两个变量的map添加列
EN

Stack Overflow用户
提问于 2019-07-04 16:12:19
回答 1查看 104关注 0票数 0

我有一个这样的数据帧:

我想要做的是添加一个基于两个变量忠诚和新的列

我创建了一个基于dow的专栏,它意味着一周中的每一天都在等待,我是这样做的:

代码语言:javascript
复制
dow_waiting = qdata.groupby('dow').agg('mean')['waiting']
qdata['dow_waiting'] = qdata.dow.map(dow_waiting)

我想为忠诚度和新专栏做同样的事情。如果忠诚度为0,新值为0,则获取等待这种情况的平均值,并将其粘贴到新列loyalty_waiting中,然后...如何使用map函数执行此操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-04 16:25:50

您可以使用merge来做到这一点。

代码语言:javascript
复制
data= {'loyalty': [1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0], 
 'new': [0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], 
 'waiting': [17, 30, 43, 37, 10, 11, 30, 24, 25, 39, 34, 0, 11, 29, 12, 0, 12, 42, 3, 1, 9, 37, 32, 25, 17, 43, 17, 22, 3, 0, 9, 45, 24, 16, 22, 7, 12, 7, 36, 49, 34, 45, 12, 9, 7, 26, 22, 4, 24, 27]
}

df= pd.DataFrame(data)
# create the sums on loyalty and new
sums=df.groupby(['loyalty', 'new']).mean()
# join them with your original data frame
df.merge(sums, left_on=['loyalty', 'new'], right_index=True)

这个yileds:

代码语言:javascript
复制
    loyalty  new  waiting_x  waiting_y
0         1    0         17  16.666667
1         1    0         30  16.666667
4         1    0         10  16.666667
8         1    0         25  16.666667
14        1    0         12  16.666667
16        1    0         12  16.666667
19        1    0          1  16.666667
27        1    0         22  16.666667
29        1    0          0  16.666667
34        1    0         22  16.666667
35        1    0          7  16.666667
41        1    0         45  16.666667
42        1    0         12  16.666667
43        1    0          9  16.666667
45        1    0         26  16.666667
2         0    0         43  23.857143
6         0    0         30  23.857143
9         0    0         39  23.857143
12        0    0         11  23.857143
18        0    0          3  23.857143
40        0    0         34  23.857143
44        0    0          7  23.857143
3         1    1         37  18.800000
5         1    1         11  18.800000
10        1    1         34  18.800000
11        1    1          0  18.800000
13        1    1         29  18.800000
15        1    1          0  18.800000
22        1    1         32  18.800000
24        1    1         17  18.800000
28        1    1          3  18.800000
30        1    1          9  18.800000
32        1    1         24  18.800000
38        1    1         36  18.800000
46        1    1         22  18.800000
47        1    1          4  18.800000
48        1    1         24  18.800000
7         0    1         24  27.153846
17        0    1         42  27.153846
20        0    1          9  27.153846
21        0    1         37  27.153846
23        0    1         25  27.153846
25        0    1         43  27.153846
26        0    1         17  27.153846
31        0    1         45  27.153846
33        0    1         16  27.153846
36        0    1         12  27.153846
37        0    1          7  27.153846
39        0    1         49  27.153846
49        0    1         27  27.153846
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56883449

复制
相关文章

相似问题

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