【问题标题】:Python: count number of days in timestamp over yearsPython:计算时间戳中多年来的天数
【发布时间】:2019-05-20 02:23:38
【问题描述】:

这是我的dataframe。请注意,最后一行与前一行不同的年份。索引是日期时间。

DateTime    data
2016-04-01  14.01
2016-04-02  17.25
2016-04-03  16.99
2016-04-04  17.34
2018-04-05  17.07

我想计算时间戳中的唯一天数。
以下代码返回 735

daily = df.resample('D').sum()
print('Number of days in df:', len(daily.index))

我希望结果是 5 天。

【问题讨论】:

  • 您可以在 datetime 列上尝试 df.nunique 函数

标签: python pandas datetime


【解决方案1】:

您实际上并不需要resample,因为您没有对数据进行任何类型的操作。您可以简单地将索引转换为freq='D'(假设您需要转换......也就是说,您的索引可能还包括时间戳)然后计算唯一值的数量:

c.asfreq('D').index.nunique()

【讨论】:

    【解决方案2】:

    使用DatetimeIndex.strftime%m-%d 表示天数,并添加Index.nunique

    n = df.index.strftime('%m-%d').nunique()
    print('Number of days in df:', n)
    #Number of days in df: 5
    

    你的解决方案应该改变:

    daily = df.groupby(df.index.strftime('%m-%d')).sum()
    print('Number of days in df:', len(daily.index))
    #Number of days in df: 5
    

    或按不同的月份和日期分组:

    daily = df.groupby([df.index.month, df.index.day]).sum()
    print('Number of days in df:', len(daily.index))
    #Number of days in df: 5
    

    但如果还需要年份的唯一值数量:

    n = df.index.nunique()
    print('Number of days in df:', n)
    #Number of days in df: 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      相关资源
      最近更新 更多