gpt4 book ai didi

python - 计算组中的平均时间,数据框 pandas

转载 作者:太空宇宙 更新时间:2023-11-03 20:13:46 24 4
gpt4 key购买 nike

所以我需要根据面积计算平均时间:

      id  direction     area    when
2 220 in K1 2014-09-01 02:00
3 220 out - 2014-09-03 12:20
6 826 in K3 2014-11-11 10:00
7 826 out - 2014-12-09 10:15
9 901 in K1 2014-09-01 10:05
10 901 out - 2014-10-05 13:20
11 901 in K5 2014-09-01 15:00
12 901 out - 2014-11-01 23:00

我想按区域对 df 进行分组,然后检查每个区域的平均时间。

我尝试简单地创建一个新列,并找出差异。什么也没发生...

df['When']=pd.to_datetime(df['When'], format='%Y/%m/%d %H:%M')

for a in range(df.shape[0],-1,1):
df['Time_diff'][i+1] = datetime.datetime.min+ ( df['when][i+1]-df['when'][i])).time()

最佳答案

定义一个函数,计算“in”和“out”时间之间的秒数,从一组 2 行中,还返回区域代码:

def fn(grp):
return pd.Series([grp.iloc[0, 2], int((grp.iloc[1, 3]
- grp.iloc[0, 3]).total_seconds())], index=['area', 'secs'])

那么想法是:

  • 将源行分组(2 个连续行表示“输入”和“输出”),
  • 应用上述函数,计算该“周期”的总秒数,
  • 面积对上述结果进行分组并计算平均值

执行此操作的代码是:

df.groupby(np.arange(len(df.index)) // 2).apply(fn).groupby('area').mean()

对于您的数据,结果是:

         secs
area
K1 1579650
K3 2420100
K5 5299200

如果您愿意,您可以将其转换为例如时间增量

关于python - 计算组中的平均时间,数据框 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58583009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com