作者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://www.ptt.cc/bbs/Python/M.1518186953.A.4D9.html
※ 編輯: lance5487 (114.24.98.230), 02/09/2018 22:36:58
→ painkiller: 查查 pandas.cut怎麼用 02/09 23:34
恩恩 長知識了 不知道有這個function XD
→ HenryLiKing: 你是比賽的吼 02/09 23:34
對阿 你也有參加嗎 快罩小弟我QQ
推 goldflower: len(df[id]=='A' & df[col]<20)/len(df[id]=='A') ? 02/10 04:14
→ goldflower: 然後for id in df['id'].unique() 就好了吧 02/10 04:15
最後用暴力法解了 囧
※ 編輯: lance5487 (114.24.98.230), 02/10/2018 14:35:04
推 b24333666: 樓上好面熟 02/12 10:16