PyPackage01---Pandas14_对类别型变量做映射

Intro

把pandas中类别型变量,映射成数值or其他值,常规操作时写个if else,然后apply操作
看几个例子:

apply

import datetime
def timer(start_time=None):
    if not start_time:
        start_time = datetime.datetime.now()
        return start_time
    elif start_time:
        thour, temp_sec = divmod((datetime.datetime.now() - start_time).total_seconds(), 3600)
        tmin, tsec = divmod(temp_sec, 60)
        print('\n Time taken: %i hours %i minutes and %s seconds.' % (thour, tmin, round(tsec, 2)))
import pandas as pd
import numpy as np
di = {1: "A", 2: "B", 3: "C", 4: "D", 5: "E", 6: "F", 7: "G", 8: "H" }
df = pd.DataFrame({ 'col1': np.random.choice( range(1,9), 1000000 ) })
def transform_f(x):
    if x=="A":
        return 1
    elif x=="B":
        return 2
    elif x=="C":
        return 3
    elif x=="D":
        return 4
    elif x=="E":
        return 5
    elif x=="F":
        return 6
    elif x=="G":
        return 7
    elif x=="H":
        return 8
start_time = timer()
df.col1.apply(lambda x:transform_f(x))
timer(start_time)
 Time taken: 0 hours 0 minutes and 0.45 seconds.

replace

start_time = timer()
df.replace({"col1": di})
timer(start_time)

 Time taken: 0 hours 0 minutes and 0.12 seconds.

map

start_time = timer()
df.col1.map(di)
timer(start_time)
 Time taken: 0 hours 0 minutes and 0.03 seconds.

                                2022-01-14 于南京市江宁区九龙湖

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值