【问题标题】:List of tuples calculate min-max date difference from tuples元组列表计算元组的最小-最大日期差
【发布时间】:2018-05-02 09:54:12
【问题描述】:

我有一个元组列表,每个元组中都有时间戳,我想获取最新的时间戳 - 元组每个第一个位置的旧时间戳。

example_out put  = [(2038, A, [Timestamp('2010-01-24 00:00:00')- Timestamp('2010-02-20 00:00:00')]),(2038,B , [Timestamp('2017-01-24 00:00:00')- Timestamp('2017-02-20 00:00:00')])] It has to do for all the IDS

abc = [(2038, 'A', Timestamp('2010-01-24 00:00:00')),
(2038, 'A', Timestamp('2010-01-27 00:00:00')),
(2038, 'A', Timestamp('2010-01-30 00:00:00')),
(2038, 'A', Timestamp('2010-02-02 00:00:00')),
(2038, 'A', Timestamp('2010-02-06 00:00:00')),
(2038, 'A', Timestamp('2010-02-11 00:00:00')),
(2038, 'A', Timestamp('2010-02-18 00:00:00')),
(2038, 'A', Timestamp('2010-02-20 00:00:00')),
(2038, 'B', Timestamp('2017-01-24 00:00:00')),
(2038, 'B', Timestamp('2017-01-27 00:00:00')),
(2038, 'B', Timestamp('2017-01-30 00:00:00')),
(2038, 'B', Timestamp('2017-02-02 00:00:00')),
(2038, 'B', Timestamp('2017-02-06 00:00:00')),
(2038, 'B', Timestamp('2017-02-11 00:00:00')),
(2038, 'B', Timestamp('2017-02-18 00:00:00')),
(2038, 'B', Timestamp('2017-02-20 00:00:00')),
(2120, 'A', Timestamp('2010-01-24 00:00:00'))]    

这是将所有 id 放入一个列表然后计算最小和最大日期的正确方法吗?

d = {}
l = []

    for r in abc:
        l.append(r)
        if r[0] not in d:
            d[r[0]] = r[1],[r[2]]

    print(d)

【问题讨论】:

    标签: python pandas datetime tuples


    【解决方案1】:

    由于您已经在使用pandas,您可以使用pd.DataFrame.groupby

    res = pd.DataFrame(abc, columns=['Year', 'Category', 'Date'])\
            .groupby(['Year', 'Category'])['Date'].agg(lambda x: x.max() - x.min())\
            .reset_index()
    
    print(res)
    
       Year Category    Date
    0  2038        A 27 days
    1  2038        B 27 days
    2  2120        A  0 days
    

    【讨论】:

      猜你喜欢
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 2020-08-09
      • 2019-11-26
      • 1970-01-01
      • 2016-10-30
      • 2020-11-12
      相关资源
      最近更新 更多