加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 根据dataframe中的值计算delta

发布时间:2020-12-20 13:46:20 所属栏目:Python 来源:网络整理
导读:我有这个DataFrame(这只是一个例子,而不是真实的数据): In [1]: import pandas as pd my_data = [{'client_id' : '001','items' : '10','month' : 'Jan'},{'client_id' : '001','items' : '20','month' : 'Feb'},'items' : '30','month' : 'Mar'},{'client_
我有这个DataFrame(这只是一个例子,而不是真实的数据):

In [1]: import pandas as pd
        my_data = [{'client_id' : '001','items' : '10','month' : 'Jan'},{'client_id' : '001','items' : '20','month' : 'Feb'},'items' : '30','month' : 'Mar'},{'client_id' : '002','items' : '15',{'client_id' : '003','month' : 'Mar'}]
        df = pd.DataFrame(my_data)

In  [2]: df
Out [2]:    
            client_id   month        items
         0        001     Jan           10
         1        001     Feb           20
         2        001     Mar           30
         3        002     Jan           30
         4        002     Feb           20
         5        002     Mar           15
         6        003     Jan           10
         7        003     Feb           20
         8        003     Mar           15

我想要的是计算每对月份购买的增量项目.也就是说,例如,客户’001’在2月(20)购买了10个项目而不是1月(10).客户’002′,买了-10件商品(2月20日,1月30日).最终的DataFrame看起来像这样:

In [3]: delta_df
Out [3]:   
            client_id   delta_items_feb   delta_items_mar
        0         001                10                10
        1         002               -10                -5
        2         003                10                -5

有关如何做的任何想法?

解决方法

这是一种方法,使用pivot_table首先按客户端和月份对项目计数进行分组:

(我首先使用df.items = df.items.astype(int)将items列转换为整数)

>>> table = df.pivot_table(values='items',rows='client_id',cols='month')
>>> table = table[['Jan','Feb','Mar']]
>>> pd.DataFrame(np.diff(table.values),columns=['delta_items_feb','delta_items_mar'],index=table.index).reset_index()

  client_id  delta_items_feb  delta_items_mar
0       001               10               10
1       002              -10               -5
2       003               10               -5

注意:在较新版本的pandas中,在创建数据透视表时使用索引/列而不是行/列.

这个:

>按客户和日期对数据进行转动,以显示每个数据的项目计数>确保表中的列按月顺序排序>使用np.diff计算连续月份之间的差异,并创建具有所需列名称的新DataFrame

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读