按 TimeDelta 分组 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 并忽略 nan
或 nat
值的情况下获取值,但涉及 lambda 表达式,结果是一个 timedelta 对象:
import numpy as np
time_groups = data_frame.groupby('Name').apply(
lambda df: np.mean(df.TimeDifference)
)
我正在尝试在 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 并忽略 nan
或 nat
值的情况下获取值,但涉及 lambda 表达式,结果是一个 timedelta 对象:
import numpy as np
time_groups = data_frame.groupby('Name').apply(
lambda df: np.mean(df.TimeDifference)
)