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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |