我有一个数据框:
df = pd.DataFrame({
'customerId' : ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B','B', 'B', 'B'],
'startOf15Min' : ['2019-07-30T00:00:00', '2019-07-30T00:15:00',
'2019-07-30T07:00:00', '2019-07-30T07:15:00',
'2019-07-30T07:30:00', '2019-07-30T07:45:00',
'2019-07-30T08:00:00', '2019-07-30T00:00:00',
'2019-07-30T00:15:00', '2019-07-30T06:30:00',
'2019-07-30T06:45:00', '2019-07-30T07:00:00',
'2019-07-30T07:15:00', '2019-07-30T07:30:00',
'2019-07-30T07:45:00', '2019-07-30T08:00:00']
}, columns=['customerId', 'startOf15Min'])
df.startOf15Min = pd.to_datetime(df.startOf15Min)
df
我需要找出两个日期时间之间缺少的 15 分钟间隔。 例如如果:
fr_timestamp = 2019-07-30 06:00:00
to_timestamp = 2019-07-30 09:00:00
对于客户 A,缺少的 15 分钟间隔为:06:00、06:15、06:30、06:45 和 08:15、08:30、08:45。 p>
对于客户 B,缺少的 15 分钟间隔为:06:00、06:15 和 08:15、08:30、08:45。
如何找到这些间隔?
问候。
最佳答案
intv = pd.date_range('2019-07-30 06:00:00','2019-07-30 09:00:00', freq='15Min', closed='left')
missing = df.groupby('customerId')['startOf15Min'].apply(lambda x: [i for i in intv if i not in x])
print(missing[0])
print(missing[1])
输出:
[Timestamp('2019-07-30 06:00:00', freq='15T'),
Timestamp('2019-07-30 06:15:00', freq='15T'),
Timestamp('2019-07-30 06:30:00', freq='15T'),
Timestamp('2019-07-30 06:45:00', freq='15T'),
Timestamp('2019-07-30 08:15:00', freq='15T'),
Timestamp('2019-07-30 08:30:00', freq='15T'),
Timestamp('2019-07-30 08:45:00', freq='15T')]
[Timestamp('2019-07-30 06:00:00', freq='15T'),
Timestamp('2019-07-30 06:15:00', freq='15T'),
Timestamp('2019-07-30 08:15:00', freq='15T'),
Timestamp('2019-07-30 08:30:00', freq='15T'),
Timestamp('2019-07-30 08:45:00', freq='15T')]
关于python - Pandas 发现缺失的 15 分钟间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57267868/