【发布时间】:2020-12-24 05:25:00
【问题描述】:
系统: O365
IDE: JupyterLab
语言: Python 3.7.3 版
库:熊猫版本 1.0.1
数据来源:个人打造
Http API 文档: https://github.com/RTICWDT/open-data-maker/blob/master/API.md
您好,我想知道是否有人知道如何使用列范围内的条件设置返回值。例如,一旦看到下一组值,我想根据某个范围内变化的相似值返回 z 分数。
已采取措施:
- 构建了下面的函数,它似乎已经完成了一半,但并非如此
代码:
# get data
df0 = pd.read_csv('data/erpservicedesk.csv')
df0.columns
# put z-score into a lamda
zscore = lambda x: (x - x.mean()) / x.std()
# build datafram with the important features
df1 = df0[['Incident ID*+', 'Res.Prod.Cat.TierII', 'Res.Op.Cat.TierIII', 'Mean-Time-Tckt-Close']]
df1.insert(4,'ZofMTTC',df1.groupby(['Res.Prod.Cat.TierII', 'Res.Op.Cat.TierIII'])['Mean-Time-Tckt-Close'].transform(zscore))
df2 = df1.sort_values(by=['Res.Prod.Cat.TierII'])
df2.head(100)
问题
看来我的 lambda 函数不是基于新列值的条件,因为它似乎对整个数据帧采用“平均时间-Tckt-Close”,而不是“Res.Prod.Cat.TierII”的每个新实例.
示例
A B C
Bob Store 10
Bob Store 11
Bob Store 8
Alfred Store 12
Alfred Store 9
我需要一个新的 D 列来反映 Bob 和 Alfred 基于各自数据的 Z 分数。
【问题讨论】:
标签: python-3.x pandas statistics pandas-groupby transform