导入数据后,现聚合分组需要判断时间,利用循环写在列表中传参到判断时间段是否重叠的函数中
def group_by_time(df):
grouped_df = df.groupby('达人UID')
result=[]
for name, group in grouped_df:
print(group)
time_list = []
for index, row in group.iterrows():
start_time = row["开始时间"]
end_time = row["结束时间"]
times = (start_time, end_time)
time_list.append(times)
print(are_overlapping(time_list))
result.append(are_overlapping(time_list))
print(result) #输出所以分组中时间重叠的情况
时间重叠判断函数
def are_overlapping(ranges):
for i in range(len(ranges)):
for j in range(i + 1, len(ranges)):
if is_overlapping(ranges[i], ranges[j]):
return True
return False
def is_overlapping(range1, range2):
start1, end1 = range1
start2, end2 = range2
# 检查两个范围是否重叠
if start1 < end2 and start2 < end1:
return True
else:
return False
合并代码
from datetime import datetime, timedelta
import os
import pandas as pd
def are_overlapping(ranges):
for i in range(len(ranges)):
for j in range(i + 1, len(ranges)):
if is_overlapping(ranges[i], ranges[j]):
return True
return False
def is_overlapping(range1, range2):
start1, end1 = range1
start2, end2 = range2
# 检查两个范围是否重叠
if start1 < end2 and start2 < end1:
return True
else:
return False
def group_by_time(df):
grouped_df = df.groupby('达人UID')
result=[]
for name, group in grouped_df:
print(group)
time_list = []
for index, row in group.iterrows():
start_time = row["开始时间"]
end_time = row["结束时间"]
times = (start_time, end_time)
time_list.append(times)
print(are_overlapping(time_list))
result.append(are_overlapping(time_list))
print(result)
if __name__ == '__main__':
data = pd.read_excel('文件') #传入字段,接口数据更好处理【不用自己到文件】
df = data[['达人UID', '开始时间', '结束时间']]
group_by_time(df)