按 T​​imeDelta 分组 Python Pandas

Group By TimeDelta Python Pandas

我正在尝试在 Python 中进行分组。我拥有的是一个包含两列的数据框......名称和时差(时差)是一个时间增量变量,看起来像以下 -1 天 14:00:0000、0 天 00:08:0000 等。名称中有重复项...看起来像 Brad、Amy、Brad、Brad、Bill、Amy ....我想做的是按名称找到时差的均值。时差也确实有 NA 值。

我试过了

data_frame['NewMean'] = data_frame['TimeDifference'].values.astype(np.int64)

means = data_frame.groupby(data_frame['Name']).mean()

means['NewMean'] = pd.to_timedelta(means['NewMean']) 

但我不断收到错误 invalid literal for int()

我知道 float 解决了这个问题,但我想用这个信息创建一个新的数据框,它只列出名称(没有重复)和每个名称的平均值

试试这个:

data_frame['TimeDifference'] = data_frame['TimeDifference'].dt.days
data_frame['mean'] = data_frame.groupby('Name')['TimeDifference'].mean()

有一种方法可以在不转换为 int 并忽略 nannat 值的情况下获取值,但涉及 lambda 表达式,结果是一个 timedelta 对象:

import numpy as np

time_groups = data_frame.groupby('Name').apply(
    lambda df: np.mean(df.TimeDifference)
)