作者lance5487 ( )
看板Python
标题Re: [问题] pandas 问题
时间Fri Feb 9 22:35:50 2018
不好意思,想再请问一个问题QQ 问题不太好描述,容我用举例的@@
USERID .... COLUMNA
A 10
A 20
A 30
A 40
A 80
B 20
B 30
B 40
我想问的是 我想给columnA设一个门槛值,根据UserID去区分达到门槛的比例
假设我设的门槛是一个array{20,40,80},然後回传一个DataFrame,如下所列
USERID THRESHOLD<=20 THRESHOLD<=40 THRESHOLD=80
A 2/5=0.4 4/5=0.8 5/5=1
B 1/3=0.33 3/3=1 3/3=1
. . . .
. . . .
. . . .
一个column会写,但多个column只能暴力解一直join,有没有比较简洁的用法
一个column的写法是
df.groupby('USERID').apply( lambda x: ((x['COLUMNA']<=20).sum())/len(x))
如果可以的话,尽量不要用到for,用for的效率比较差,但有for的解法也可以啦XD
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.24.98.230
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1518186953.A.4D9.html
※ 编辑: lance5487 (114.24.98.230), 02/09/2018 22:36:58
1F:→ painkiller: 查查 pandas.cut怎麽用 02/09 23:34
恩恩 长知识了 不知道有这个function XD
2F:→ HenryLiKing: 你是比赛的吼 02/09 23:34
对阿 你也有参加吗 快罩小弟我QQ
3F:推 goldflower: len(df[id]=='A' & df[col]<20)/len(df[id]=='A') ? 02/10 04:14
4F:→ goldflower: 然後for id in df['id'].unique() 就好了吧 02/10 04:15
最後用暴力法解了 囧
※ 编辑: lance5487 (114.24.98.230), 02/10/2018 14:35:04
5F:推 b24333666: 楼上好面熟 02/12 10:16