005—pandas 订单数据修改为具体补贴项目


需求:

  • 本需求为一组订单数据,一个订单有两条数据,一个为订单使用的优惠类型及优惠金额,另外一个为该优惠的补贴金额。
  • 由于补贴数据类型全部标记为「补贴」,这了方便我们查看,需要根据同订单的优惠类型,将补贴全部替换为优惠类型-补贴的形式。

二、使用步骤

1.引入库

代码如下(示例):

import pandas as pd
from io import StringIO

2.读入数据

代码如下(示例):

data = '''
类型,订单,金额
补贴,1001,5
会员卡,1001,10
补贴,1002,8
优惠券,1002,19
补贴,1003,9
第三方,1003,20
补贴,1004,5
会员卡,1004,10
'''

df = pd.read_csv(StringIO(data))
df

根据需求,比如第一行数据的类型名为补贴,按订单号 1001 对应的类型列非补贴值修改为「会员卡-补贴」,其他订单类型。
这里我们假定优惠类型和补贴前后相对位置不固定。
005—pandas 订单数据修改为具体补贴项目_第1张图片

#先来编写分组处理函数。由于为「补贴」的要替换,我们用 mask() 圈选出来操作:
def func(grouped: pd.Series):
    # 对非补贴值的内容拼接「-补贴」
    foo = grouped.loc[lambda s: ~(s=='补贴')].squeeze()+'-补贴'
    # 对值是「补贴」的内容进行替换
    return grouped.mask(grouped=='补贴', foo)
#以上代码中 squeeze() 可以将我们筛选出的长度为 1 的 Series 转为标量。
#最后,应该通过分组应用这个函数:
# 对类型列进行替换,按订单号分组后对分组内的类型列应用函数
df.assign(类型=df.groupby('订单').类型.apply(func))

005—pandas 订单数据修改为具体补贴项目_第2张图片


总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(pandas,实战案例大全,pandas)