簡體   English   中英

元組列表計算元組的最小 - 最大日期差異

[英]List of tuples calculate min-max date difference from tuples

我有一個元組列表,每個元組都有時間戳,我想得到最新的時間戳 - 元組的每個第一個位置的舊時間戳。

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)

由於您已經在使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM