【问题标题】:How do I find the median in the DataFrame column?如何在 DataFrame 列中找到中位数?
【发布时间】:2021-11-11 18:31:52
【问题描述】:

df['diff']

  1. 23:59:01
  2. 23:59:13
  3. 23:59:17
  4. 23:59:27
  5. 23:59:52

hh-mm-ss 数据是通过 TimesDelta 计算会话之间的差异后获得的。 将时间转换为秒并找到中位数。如何找到 hh-mm-ss 格式的中位数?

【问题讨论】:

    标签: python pandas dataframe median


    【解决方案1】:

    diff 列需要转换为数字秒数。

    import pandas as pd
    def time2sec(t):
     (h, m, s) = t.split(':')
     return int(h) * 3600 + int(m) * 60 + int(s)
    
    df = pd.DataFrame(['23:59:01','23:59:13','23:59:17','23:59:27','23:59:52'],columns=['diff'])
    df['diff_sec'] = df['diff'].map(time2sec)
    print(df)
    median = df['diff_sec'].median()
    print('median :',median)
    
           diff  diff_sec
    0  23:59:01     86341
    1  23:59:13     86353
    2  23:59:17     86357
    3  23:59:27     86367
    4  23:59:52     86392
    86357.0
    

    【讨论】:

      【解决方案2】:

      如果您的数据已经是您提到的 Timedelta 格式,您可以使用 df.median() 获取系列的中位数。

      【讨论】:

        【解决方案3】:

        你可以试试:

        pd.to_timedelta(df['diff']).median() 
        

        pd.to_timedelta 将日期字符串转换为 Timedelta。然后,我们可以使用Series.median() 得到中位数。

        结果

        Timedelta('0 days 23:59:17')
        

        【讨论】:

          猜你喜欢
          • 2019-07-28
          • 2022-11-30
          • 2016-12-09
          • 2021-11-10
          • 2021-03-17
          • 2020-12-15
          • 2021-08-20
          • 1970-01-01
          相关资源
          最近更新 更多