【发布时间】:2020-03-23 16:17:37
【问题描述】:
我有三列 X、Y、Z 的 df。我想应用 groupby 函数来根据 X 对数据进行分组。然后我想在每个组中插入flag 列。标志列的条件是,如果 Column Z 30% 的值大于 1.5,则为 group 添加标志列值 1。如果 Column Z 30% 的值不大于 1.5,则为 group 添加标志列值 0 。
这是我的例子 df:
df = pd.DataFrame({'X':['1', '1', '1' ,'1', '1', '2','2','2','2','2','2','3','3','3'],'Y':["34","45","33","45","44", "66",'67','23','34','10','11','13','12','14'],'Z':["1.2","1.3","1.6","1.7","1.8", "0",'0','0','1.8','1.2','1.3','1.6','1.7','1.8']})
X Y Z
0 1 34 1.2
1 1 45 1.3
2 1 33 1.6
3 1 45 1.7
4 1 44 1.8
5 2 66 0
6 2 67 0
7 2 23 0
8 2 34 1.8
9 2 10 1.2
10 2 11 1.3
11 3 13 1.6
12 3 12 1.7
13 3 14 1.8
想要的结果:
df_result= pd.DataFrame({'X':['1', '1', '1' ,'1', '1', '2','2','2','2','2','2','3','3','3'],'Y':["34","45","33","45","44", "66",'67','23','34','10','11','13','12','14'],'Z':["1.2","1.3","1.6","1.7","1.8", "0",'0','0','1.8','1.2','1.3','1.6','1.7','1.8'],'flag':["1","1","1","1","1", "0",'0','0','0','0','0','1','1','1']})
print(df_result)
X Y Z flag
0 1 34 1.2 1
1 1 45 1.3 1
2 1 33 1.6 1
3 1 45 1.7 1
4 1 44 1.8 1
5 2 66 0 0
6 2 67 0 0
7 2 23 0 0
8 2 34 1.8 0
9 2 10 1.2 0
10 2 11 1.3 0
11 3 13 1.6 1
12 3 12 1.7 1
13 3 14 1.8 1
【问题讨论】:
标签: python-3.x pandas numpy pandas-groupby apply