我在查找数据框内的时间差异时遇到问题。以下代码将输出数据集中每行之间的时差。我想通过ID重置时差。所以我只会看到相同ID之间的差异。任何人都可以指导我阅读文档或给我一些关于如何实现这一目标的提示吗?
Golden['TimeDiff'] = Golden.CREATED_ON.diff().dt.total_seconds()
>>> Golden
ID CREATED_ON TimeDiff
2 2014-12-08 03:29:08 NaN
2 2014-12-08 03:29:08 0.0
4 2015-02-09 00:10:01 5431253.0
答案 0 :(得分:0)
首先,您需要按ID
和CREATED_ON
对数据框进行排序。然后,您可以对ID
进行分组,并获取CREATED_ON
列的差异,该列将为您提供一列Timedelta对象。
# Set-up dataframe.
df = pd.DataFrame(
{'ID': [2, 2, 4],
'CREATED_ON': [pd.Timestamp('2014-12-08 03:29:08'),
pd.Timestamp('2014-12-08 03:29:08'),
pd.Timestamp('2015-02-09 00:10:01')]})
# Sort dataframe on `ID` and `CREATED_ON`.
df = df.sort_values(['ID', 'CREATED_ON'])
# Assign new column based on group time differences.
df = df.assign(TimeDiff=df.groupby('ID')[['CREATED_ON']].transform(
lambda group: group.diff()))
>>> df
CREATED_ON ID TimeDiff
0 2014-12-08 03:29:08 2 NaT
1 2014-12-08 03:29:08 2 0 days
2 2015-02-09 00:10:01 4 NaT