【问题标题】:Calculate datatime difference between rows in python Pandas计算python Pandas中行之间的日期时间差
【发布时间】:2019-12-10 15:06:25
【问题描述】:

我在这里尝试计算每个唯一 machine_id 的行之间的日期时间差。我已经对数据框进行了分组并尝试过

newdf = newdf.copy()
newdf['diffs'] = float('nan')
newdf = newdf.copy()
for index in newdf.index.levels[0]:
    newdf.diffs[index] = newdf.event_datetime[index].diff

数据集看起来像

https://i.stack.imgur.com/eg93C.png

【问题讨论】:

  • 你的数据框使用什么包?
  • 我正在使用熊猫

标签: python pandas dataframe datetime


【解决方案1】:

你在groupby操作后尝试过diff吗?比如:

newdf.groupby('machine_id').event_date.diff()

【讨论】:

  • 嗨,是的。我试过了。但问题是 event_data 有一种日期时间。我正在尝试找到一种方法来计算两个日期时间变量之间的差异
  • 我认为diff 也适用于日期时间。 event_date 的 dtype 是什么?你想要的输出是什么?天、小时、秒(整数)或只是 timedelta 的差异?
  • 是的,即使类型是日期时间,diff 函数也应该可以正常工作。也许您应该使用 pd.to_datetime 将变量设置为日期时间
  • 嗨,我想要的输出是天、小时和秒的差异。
  • @RunyaoYin 那么您可以先尝试将目标列转换为日期时间df['col'] = pd.to_datetime(df['col'])
【解决方案2】:

我尝试创建多索引数据框,使用diff() 函数应该可以正常工作。

使用 ATL 建议的 newdf.groupby('machine_id').event_date.diff() 应该可以正常工作。 o

# hierarchical indices and columns
index = pd.MultiIndex.from_product([[598, 615, 721], [43, 43, 45]],
                                   names=['machine_id', 'prod_category_id'])

# mock some data
data = ['2017-03-20 12:00:00','2017-03-29 01:00:00','2017-04-29 01:00:00',
        '2017-03-30 02:00:00', '2017-04-29 02:00:00','2017-05-29 12:00:00',
        '2017-10-30 02:00:00', '2017-11-29 02:00:00', '2017-11-29 04:00:00']

# create the DataFrame
newdf = pd.DataFrame(data, index=index)
newdf.columns = ['event_date']

newdf['event_date'] = pd.to_datetime(newdf['event_date'])
newdf.groupby(level=0)['event_date'].diff()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2019-01-24
    • 2019-11-11
    • 1970-01-01
    • 2010-11-07
    • 2020-02-14
    相关资源
    最近更新 更多