今天接到一个需求,要求对数据错位相减。感觉写得有点麻烦,如果有其他方法,欢迎留言交流

数据说明:有客户、消费日期、消费额度

求解目标:对于同一个客户,对日期升序排序,如果下一个日期的消费额度大于上一个日期的消费额度,则标记,最终取出第一次发生时对应的较大的日期

最简单的方法是使用 pandas.Series.shift 具体可参考官方文档

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.shift.html

import pandas as pd
import numpy as np
df = pd.DataFrame({'persion':['A','A','A','A','B','B','B','B','B', 'C' ,'D','D','D']
                   , 'date':[0, 1, 6,  4, 1, 7, 4, 5, 6, 3, 1, 2, 3]
                   , 'price':[1, 5, 3, 0, 2, 4, 5, 8, 3, 5, 7, 7, 7 ]})
# 组内排序
df['sort_id'] = df['date'].groupby(df['persion']).rank()
df.sort_values(by = ['persion', 'sort_id'], axis=0, inplace=True) 
df['price_y'] = df["price"].shift(1)

问题很简单,解决的朋友请点赞
----------------分享完毕------------------------
Address:北京
Date:202001009
喜欢可以关注【小猪课堂】公众号了解更多内容

今天接到一个需求,要求对数据错位相减。感觉写得有点麻烦,如果有其他方法,欢迎留言交流数据说明:有客户、消费日期、消费额度求解目标:对于同一个客户,对日期升序排序,如果下一个日期的消费额度大于上一个日期的消费额度,则标记,最终取出第一次发生时对应的较大的日期最简单的方法是使用 pandas.Series.shift 具体可参考官方文档https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.shift.html 表 a 中有若干元素,表 b 有若干元素,现要求使用 Python 3 编程,找出属于表 a 但又不属于表 b 的所有元素,并放到一个新定义的表 c 里面。当于用编程实现如下表减法公式: c=a−b(∀i∈c,i∈a,i∉b) c = a - b (\forall i \in c, i \in a, i \notin b ) c=a−b(∀i∈c,i∈a,i∈/​b) 解决方案1 先将表转为集合,然后做减法操作: >>> list_a = [1, 2, 3, 4 表达式: df.loc[ [ 索引的名称], [ 索引的名称 ] ] df.loc[ 索引的名称 ] 默认索引的名称是索引的名称, 默认索引的名称为df中所有的索引 periods:类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值是1,1就表示移动一次,注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。 freq: DateOffset, timedelta, or time rule stri... >>> import pandas >>> help(pandas.DataFrame.shift) Help on function shift in module pandas.core.frame: shift(self, periods=1, freq=None, axis=0) Shift index by desired number of periods with an optional time 数据说明:有客户、消费日期、消费额度 求解目标:对于同一个客户,对日期升序排序,如果下一个日期的消费额度大于上一个日期的消费额度,则标记,最终取出第一次发生时对应的较大的日期 import pandas as pd import numpy as np df = pd.DataFrame({'per... t1.date_column, t2.date_column, DATEDIFF(t2.date_column, t1.date_column) AS date_difference your_table_name t1 JOIN your_table_name t2 ON t1.id = t2.id - 1; 其中,`your_table_name` 表示你的表的名称,`date_column` 表示日期的名称,`id` 表示该的唯一标识符,并且用于链接两数据。通过使用 `ON t1.id = t2.id - 1` 这一连接条件,我们可以确保每一数据都与其下一数据连接在一起。最后,`DATEDIFF` 函数可以计算两个日期之间的天数差值。 【Python报错解决方法】:ParserError:Error tokenizing data.C error:Expected x fields in line nnn,saw y. 16983 【Python报错解决方案】亲测有效:Message: 'chromedriver.exe' executable needs to be in PATH. Please see https m0_53778606: 搞了好久原来是要放在anaconda的Scripts下,谢谢楼主表情包 【Python绘图】——Python绘图不清晰,设置矢量图 优秀的华华: 牛哇牛哇,谢谢,就再找这个解决办法! 【Python报错解决方案】TypeError: ‘float‘ object is not callable 伞边猫�: 【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient) sinat_37756716: 那你这只能计算长度为6的相关系数了吗。。还是更正一下吧。 【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient) xifulou_202: r是相关系数,p是p值吧,应该是