代码之家  ›  专栏  ›  技术社区  ›  Luca

python查找时间字符串的最大值

  •  1
  • Luca  · 技术社区  · 4 年前

    intervals = ["1 days", "7 days", "30 days"]
    

    5 回复  |  直到 4 年前
        1
  •  3
  •   Jiří Baum    4 年前

    尝试 the parse_timespan function from humanfriendly

    >>> from humanfriendly import parse_timespan
    >>> intervals = ["1 days", "7 days", "30 days"]
    >>> parsed_intervals = [parse_timespan(interval) for interval in intervals]
    >>> max(parsed_intervals)
    2592000.0
    

    如果需要原始格式(而不是进一步处理的时间),还可以使用:

    >>> from humanfriendly import parse_timespan
    >>> intervals = ["1 days", "7 days", "30 days"]
    >>> max(intervals, key=parse_timespan)
    '30 days'
    
        2
  •  1
  •   Luca    4 年前

    我是用电脑做的 pandas 最终。在这里张贴,以防对某人有所帮助。

    import pandas as pd
    intervals = ["1 days", "7 days", "30 days"]
    deltas = [pd.Timedelta(i) for i in intervals]
    
    idx = deltas.index(max(deltas))
    
    
        3
  •  0
  •   Brett Lapierre    4 年前

    这可以通过使用核心python实现(如下所示)。

    intervals = ["1 days", "7 days", "30 days"]
    numbers_only = [] # creating a list to get the numbers only
    for interval in intervals: # iteration through the intervals
        numbers_only.append(int(interval.split(" ")[0])) # splitting each interval on a blank space and appending just the number
    
    max_in_nums = max(numbers_only) # using python's default library max function to get the max number in a list of numbers
    print(numbers_only.index(max_in_nums)) # get the index of the number 
    
        4
  •  0
  •   Karina    4 年前
    intervals = ["1 days", "7 days", "30 days"]
    findmax =[]
    for i in range(len(intervals)):
        n = intervals[i].replace(' days', '')
        findmax.append(float(n))
    print(max(findmax))
    
        5
  •  0
  •   Sunjid    4 年前

    此代码应适用于:

    result = 0
    interval = ''
    for i in range(len(intervals)):
        val = int(intervals[i].split(' ')[0])
        if val > result:
            result = val
            interval = i
    print(interval)