pandas显示百分数_pandas groupby和列中每个值出现的百分比

df['created_column'] = df.groupby('iv_5')['iv_5'].transform('size').div(len(df)).le(0.4).view('i1')

print (df)

iv_1 iv_2 iv_3 iv_4 iv_5 col2rplc created_column

0 0 0 0 0 0 a 0

333 0 0 0 0 0 b 0

222 1 2 3 4 5 aa 1

324 1 2 3 4 5 cc 1

1234 1 0 0 0 1 a 1

1235 0 2 0 4 0 a 0

1236 0 0 3 0 0 a 0

1237 0 0 1 0 0 b 0

1238 0 2 0 2 0 b 0

1239 3 0 0 0 3 b 1

s = df['iv_5'].value_counts(normalize=True)

idx = s.index[s <= 0.4]

df['created_column'] = df['iv_5'].isin(idx).view('i1')

如果需要

Series.between

>=

,

<=

,用于

>

<

使用参数

inclusive=False

:

df['created_column'] = df.groupby('iv_5')['iv_5'].transform('size').div(len(df)).between(0.2, 0.5).view('i1')

print (df)

iv_1 iv_2 iv_3 iv_4 iv_5 col2rplc created_column

0 0 0 0 0 0 a 0

333 0 0 0 0 0 b 0

222 1 2 3 4 5 aa 1

324 1 2 3 4 5 cc 1

1234 1 0 0 0 1 a 0

1235 0 2 0 4 0 a 0

1236 0 0 3 0 0 a 0

1237 0 0 1 0 0 b 0

1238 0 2 0 2 0 b 0

1239 3 0 0 0 3 b 0

如需组合

>

<=

不能使用between,以下是备选方案:

s1 = df.groupby('iv_5')['iv_5'].transform('size').div(len(df))

df['created_column'] = ((s1 > 0.2) & (s1 <= 0.6)).view('i1')

print (df)

iv_1 iv_2 iv_3 iv_4 iv_5 col2rplc created_column

0 0 0 0 0 0 a 1

333 0 0 0 0 0 b 1

222 1 2 3 4 5 aa 0

324 1 2 3 4 5 cc 0

1234 1 0 0 0 1 a 0

1235 0 2 0 4 0 a 1

1236 0 0 3 0 0 a 1

1237 0 0 1 0 0 b 1

1238 0 2 0 2 0 b 1

1239 3 0 0 0 3 b 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值