簡體   English   中英

試圖將日期列表放入date.year,date.month,date.day中以便進行比較?

[英]Trying to make a list of dates into date.year, date.month, date.day for comparrison?

我有一個列表列表,每個列表中都有整數值,它們表示8年內的日期。

     dates = [[2014, 11, 14], [2014, 11, 13], ....., [2013, 12, 01].....]

我需要比較這些日期,以便可以找到每月的平均成本以及文件中存儲的其他數據。 所以我需要弄清楚如何遍歷日期並在月份改變時停止。 每個日期都有相應的成本和數量值,我將需要找到它們的平均值。

所以我試圖找到一種以x.year,x.month,x.day格式進行日期設置的方法,但是我是python新手,非常困惑。

如何遍歷8年期間的所有日期,但停止並計算每個特定月份的數據平均值,並存儲每個月的平均值?

預先感謝,希望這是有道理的。

您可以使用詞典將年和月保留為鍵,將列表中的相對天保留為值,然后可以對按年和月分類的項目進行任何處理。

>>> dates = [['2014', '11', '14'], ['2014', '10', '13'], ['2014', '10', '01'], ['2014', '12', '01'], ['2013', '12', '01'], ['2013', '12', '09'], ['2013', '10', '01'], ['2013', '10', '05'], ['2013', '04', '01']]
>>> my_dict = {}
>>> 
>>> for y,m,d in dates:
...     my_dict.setdefault((y,m),[]).append(d)
... 
>>> my_dict
{('2013', '10'): ['01', '05'], ('2013', '12'): ['01', '09'], ('2014', '11'): ['14'], ('2014', '10'): ['13', '01'], ('2014', '12'): ['01'], ('2013', '04'): ['01']}
>>> 

您可以使用嵌套列表推導將結果轉換為日期時間對象的相對月份的嵌套列表:

>>> [[datetime(int(y),int(m),int(d)) for d in days] for (y,m),days in my_dict.items()]
[[datetime.datetime(2013, 10, 1, 0, 0), datetime.datetime(2013, 10, 5, 0, 0)], [datetime.datetime(2013, 12, 1, 0, 0), datetime.datetime(2013, 12, 9, 0, 0)], [datetime.datetime(2014, 11, 14, 0, 0)], [datetime.datetime(2014, 10, 13, 0, 0), datetime.datetime(2014, 10, 1, 0, 0)], [datetime.datetime(2014, 12, 1, 0, 0)], [datetime.datetime(2013, 4, 1, 0, 0)]]

如果您想迭代一下您的日期數組,並在每月變化時進行操作,則可以使用以下方法:

dates = [[2014, 11, 14], [2014, 11, 13], [2013, 12, 1]]
old_m = ""
for year, month, day in dates:
    if old_m != month:
        # calculate average here
        old_m = month

暫無
暫無

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

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