可以使用Python中的pandas库来处理这个问题。假设我们有一个数据集,包含三列:开始时间(start_time)、结束时间(end_time)和组(group)。为了计算持续时间,我们可以通过将end_time减去start_time得到时间差。使用groupby函数可以对组进行分组,并使用apply函数对分组后的数据进行计算。此外,我们需要判断每个组的成员数是否大于1,只有在成员数大于1时才会计算重叠持续时间。
示例代码如下:
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv')
# 计算持续时间
data['duration'] = pd.to_datetime(data['end_time']) - pd.to_datetime(data['start_time'])
# 对组进行分组,并计算持续时间
grouped = data.groupby('group')
result = grouped.apply(lambda x: x.duration.sum() if len(x) <= 1 else sum(x.duration) - (max(x.end_time) - min(x.start_time)))
print(result)
此代码可以计算每个组的持续时间,并且只在组成员>1时计算重叠持续时间。
上一篇:按组合计返回重复值