pandas 清洗技巧(pandas.apply())

92 阅读2分钟

启动Jupyter notebook(因为jupyter是安装在虚拟环境中,所以每次使用该虚拟环境之前激活虚拟环境):

# 激活虚拟环境
source myenv/bin/activate

# 启动虚拟环境
jupyter notebook

正文

apply() 函数是 pandas 库中 DataFrame 和 Series 对象的一个方法,它允许你对 DataFrame 或 Series 中的数据应用一个函数。这个方法可以用于对数据进行转换、过滤或者执行任何其他操作。


需求:

  1. 将 '处理地' 列转换为文本类型

  2. 截取处理地字段的前9位,并创建一个新列街道编码,将新列转为文本类型

  3. 对个体户表中的全年营收字段进行营收分段,分段后作为新列 ⬇️

  • 全年营收<2000或者为空的,营收分段显示为0;
  • 全年营收>=2000并且<5000的,营收分段显示为200;
  • 全年营收>=5000并且<10000的,营收分段显示为500;
  • 全年营收>=10000并且<20000的,营收分段显示为1000;
  • 全年营收>=20000的,营收分段显示为2000;

image.png

import pandas as pd

# 读取Excel文件
df = pd.read_excel('/Users/xxx/Desktop/Temp/个体户.xlsx')

# 将 '处理地' 列转换为文本类型
df['处理地'] = df['处理地'].astype(str)
# 将处理地转为文本类型,并截取处理地字段的前9位,并创建一个新列街道编码
df['街道编码'] = df['处理地'].astype(str).str[0:9]

# 定义营收分段的函数
def 收入分段函数(revenue):
    if pd.isnull(revenue) or revenue < 2000:
        return 0
    elif 2000 <= revenue < 5000:
        return 200
    elif 5000 <= revenue < 10000:
        return 500
    elif 10000 <= revenue < 20000:
        return 1000
    else:
        return 2000

# 应用营收分段函数,创建一个新的列'营收分段'
df['营收分段'] = df['全年营收'].apply(收入分段函数)

# 如果需要,可以将结果保存到新的Excel文件中
df.to_excel('/Users/xxx/Desktop/个体户导出_营收分段.xlsx', index=False)

image.png