【发布时间】:2018-01-07 17:54:47
【问题描述】:
在过去三个月左右的时间里,我一直在使用 Pandas 进行数据分析(并自学 Pandas)。
我有一个如下所示的 Pandas DataFrame:
df
client_id opp_id opportunity_status
4312 80465 Closed Won
4312 34508 Closed Won
4312 56478 Pending
3456 29930 Closed Lost
3456 70331 Pending
3456 65203 Closed Won
5203 29930 Closed Lost
5203 70331 Pending
5203 65203 Closed Lost
5203 65203 Closed Lost
我想高效地创建第二个 DataFrame:
has_cw
client_id has_closed_won_opp
4312 True
3456 True
5203 False
其中has_cw.client_id 是来自df.client_id 的唯一值,has_cw.has_closed_won_opp 是一个布尔值列表,其中True 表示df 中至少有一个“已结束获胜”机会。
除了以这种方式循环通过df 效率低下之外,我很难想出一个好的方法:
has_cw = dict()
for id in df.client_id.unique():
has_cw_bool = 'Closed Won' is in list(df[df['client_id'] == id]['opportunity_status'])
has_cw[id] = has_cw_bool
然后将has_cw dict 转换为DataFrame。
我怎样才能有效地做到这一点?提前致谢!
【问题讨论】: