如果我有一个 Dataframe
date
01.01.2003
02.01.2003
03.01.2003
05.01.2003
06.01.2003
我用这个代码
for i in (df['date']):
if df['date'].iloc[i+1]-df['date'].iloc[i] == 1 :
df['Max'] = df['date'].iloc[i+1]
else :
df['Max'] = ''
它会把错误
Addition/subtraction of integers and integer-arrays with Timestamp is no longer supported. Instead of adding/subtracting `n`, use `n * obj.freq`
但是如果我把i
改为timdelta(days = 1),它会变成错误,说如果不是整数,就不能索引。
那么代码应该怎么样呢?我想在每一个连续的日子里定义"最大值"。
这是我喜欢的输出
date max
01.01.2003
02.01.2003
03.01.2003 03.01.2003
05.01.2003
06.01.2003 06.01.2003
- 请注意,它只写入连续的最大值,并将其他值留空。从03.01.2003到05.01.2003不连续,因此重新开始
1条答案
按热度按时间nimxete21#
将列转换为日期时间,然后通过
Series.diff
的连续日期时间将最大值获取到新列,并通过1 day
与GroupBy.transform
和max
进行比较:如果需要删除连续的最大日期时间,请用途: